- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java使用Statement接口执行SQL语句操作实例分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了java使用statement接口执行sql语句操作的方法。分享给大家供大家参考,具体如下:
statement执行sql语句:
1. 对数据库的曾删改操作时,使用stmt.executeupdate(sql) 执行给定 sql 语句,分别为 insert 、update、delete. 。
2. 对数据库做查询时,直接使用 stmt.executequery(sql),返回结果可以为一个resultset结果集.
首先做一些准备工作:
①对要进行操作的数据库表进行封装,比如说我的数据mydata中的aistu表,用aimember.java进行封装,以便后面操作。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package
com.mysqltest.jdbc.model;
/**
* 定义一个model
* 成员模型
* @author ai_stu
*
*/
public
class
aimember {
private
string name;
private
int
id;
private
int
age;
private
string email;
private
string tel;
private
double
salary;
private
string riqi;
/**
* alt+shift+s 添加构造函数generating constructor using fields.
* @param name
* @param id
* @param age
* @param email
* @param tel
* @param salary
* @param riqi
*/
public
aimember(string name,
int
id,
int
age, string email, string tel,
double
salary, string riqi) {
super
();
this
.name = name;
this
.id = id;
this
.age = age;
this
.email = email;
this
.tel = tel;
this
.salary = salary;
this
.riqi = riqi;
}
//重构
public
aimember(
int
id) {
super
();
this
.id = id;
}
public
string getname() {
return
name;
}
public
void
setname(string name) {
this
.name = name;
}
public
int
getid() {
return
id;
}
public
void
setid(
int
id) {
this
.id = id;
}
public
int
getage() {
return
age;
}
public
void
setage(
int
age) {
this
.age = age;
}
public
string getemail() {
return
email;
}
public
void
setemail(string email) {
this
.email = email;
}
public
string gettel() {
return
tel;
}
public
void
settel(string tel) {
this
.tel = tel;
}
public
double
getsalary() {
return
salary;
}
public
void
setsalary(
double
salary) {
this
.salary = salary;
}
public
string getriqi() {
return
riqi;
}
public
void
setriqi(string riqi) {
this
.riqi = riqi;
}
}
|
②对连接mysql数据库,和关闭连接方法进行封装,这里用dbutil.java进行封装,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package
com.mysqltest.jdbc.modelcomp;
public
class
compmember {
private
int
id;
private
string name;
private
int
age;
private
double
salary;
/**
* 构造函数1
* @param name
* @param age
* @param salary
*/
public
compmember(string name,
int
age,
double
salary) {
super
();
this
.name = name;
this
.age = age;
this
.salary = salary;
}
/**
* 重载构造函数
* @param id
* @param name
* @param age
* @param salary
*/
public
compmember(
int
id, string name,
int
age,
double
salary) {
super
();
this
.id = id;
this
.name = name;
this
.age = age;
this
.salary = salary;
}
/**
* get,set方法
*/
public
int
getid() {
return
id;
}
public
void
setid(
int
id) {
this
.id = id;
}
public
string getname() {
return
name;
}
public
void
setname(string name) {
this
.name = name;
}
public
int
getage() {
return
age;
}
public
void
setage(
int
age) {
this
.age = age;
}
public
double
getsalary() {
return
salary;
}
public
void
setsalary(
double
salary) {
this
.salary = salary;
}
@override
/**
* 改写tostring,使得显示更好
*/
public
string tostring() {
return
"["
+
this
.id+
"]"
+
this
.name+
","
+
this
.age+
","
+
this
.salary;
}
}
|
准备工作做好了,下面开始使用statement接口执行sql语句来实现增删改:
①增:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package
com.mysqltest.jdbc.two2;
import
java.sql.connection;
import
java.sql.statement;
import
com.mysqltest.jdbc.model.aimember;
import
com.mysqltest.jdbc.util.dbutil;
public
class
demo3 {
/**
* 添加成员到表中1
* @param name
* @param id
* @param age
* @param email
* @param tel
* @param salary
* @param riqi
* @return
* @throws exception
*/
@suppresswarnings
(
"unused"
)
private
static
int
addmember(string name,
int
id,
int
age,string email,string tel,
double
salary,string riqi)
throws
exception{
dbutil dbutil =
new
dbutil();
//之前封装好的
connection con = dbutil.getcon();
//获取数据库连接
string sql =
"insert into aistu values('"
+name+
"',"
+id+
",'"
+age+
"','"
+email+
"','"
+tel+
"','"
+salary+
"','"
+riqi+
"')"
;
statement stmt = con.createstatement();
//获取statement
int
result = stmt.executeupdate(sql);
dbutil.close(stmt, con);
return
result;
}
/**
* 添加成员到表中2方法
* @param mem
* @return
* @throws exception
*/
private
static
int
addmember2(aimember mem)
throws
exception{
//aimember也是之前封装好的
// mem.getname();
dbutil dbutil =
new
dbutil();
//之前封装好的
connection con = dbutil.getcon();
//获取数据库连接
string sql =
"insert into aistu values('"
+mem.getname()+
"',"
+mem.getid()+
",'"
+mem.getage()+
"','"
+mem.getemail()+
"','"
+mem.gettel()+
"','"
+mem.getsalary()+
"','"
+mem.getriqi()+
"')"
;
statement stmt = con.createstatement();
//获取statement
int
result = stmt.executeupdate(sql);
dbutil.close(stmt, con);
return
result;
}
// private static int addmenber2()
public
static
void
main(string[] args)
throws
exception {
/*int result = addmember("刘翔", 4, 28, "15xliu@stu.edu.cn", "13411957776", 8000.00, "2015-09-10");
if(result==1){
system.out.println("添加成功");
}else{
system.out.println("添加失败");
}*/
//多行注释,ctrl+shift+/
aimember mem =
new
aimember(
"李娜"
,
6
,
25
,
"15nli@stu.edu.cn"
,
"13411957775"
,
8000.00
,
"2015-09-03"
);
int
result = addmember2(mem);
if
(result==
1
){
system.out.println(
"添加成功"
);
}
else
{
system.out.println(
"添加失败"
);
}
}
}
|
②改:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package
com.mysqltest.jdbc.two3;
import
java.sql.connection;
import
java.sql.statement;
import
com.mysqltest.jdbc.model.aimember;
import
com.mysqltest.jdbc.util.dbutil;
public
class
demo4 {
private
static
dbutil dbutil =
new
dbutil();
// @suppresswarnings("unused")
/**
* 修改成员
* @param mem
* @return
* @throws exception
*/
private
static
int
updatemember(aimember mem)
throws
exception {
connection con = dbutil.getcon();
// 获取数据库连接
string sql =
"update aistu set name='"
+ mem.getname() +
"',id="
+ mem.getid() +
",age='"
+ mem.getage()
+
"',email='"
+ mem.getemail() +
"',tel='"
+ mem.gettel() +
"',salary='"
+ mem.getsalary() +
"',riqi='"
+ mem.getriqi() +
"' where id="
+ mem.getid();
//格式化,ctrl+a全选,然后ctrl+shift+f格式化
statement stmt = con.createstatement();
// 获取statement
int
result = stmt.executeupdate(sql);
dbutil.close(stmt, con);
return
result;
// return 0;
}
public
static
void
main(string[] args)
throws
exception {
aimember mem =
new
aimember(
"劳尔"
,
6
,
24
,
"14elao@stu.edu.cn"
,
"13411957770"
,
18000.00
,
"2014-09-03"
);
int
result = updatemember(mem);
if
(result==
1
) {
system.out.println(
"更新成功"
);
}
else
{
system.out.println(
"更新失败"
);
}
}
}
|
③删:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package
com.mysqltest.jdbc.two4;
import
java.sql.connection;
import
java.sql.statement;
import
com.mysqltest.jdbc.model.aimember;
import
com.mysqltest.jdbc.util.dbutil;
public
class
demo5 {
private
static
dbutil dbutil =
new
dbutil();
public
static
int
deletmember(aimember mem)
throws
exception{
connection con = dbutil.getcon();
// 获取数据库连接
string sql =
"delete from aistu where id="
+mem.getid();
statement stmt = con.createstatement();
// 获取statement
int
result = stmt.executeupdate(sql);
dbutil.close(stmt, con);
return
result;
}
public
static
void
main(string[] args)
throws
exception {
aimember mem =
new
aimember(
5
);
int
result = deletmember(mem);
if
(result==
1
) {
system.out.println(
"成功删除成员"
);
}
else
{
system.out.println(
"删除成员失败"
);
}
}
}
|
希望本文所述对大家java程序设计有所帮助.
原文链接:https://blog.csdn.net/u010986080/article/details/51812936 。
最后此篇关于Java使用Statement接口执行SQL语句操作实例分析的文章就讲到这里了,如果你想了解更多关于Java使用Statement接口执行SQL语句操作实例分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
SQL、PL-SQL 和 T-SQL 之间有什么区别? 谁能解释一下这三者之间的区别,并提供每一个的相关使用场景? 最佳答案 SQL 是一种对集合进行操作的查询语言。 它或多或少是标准化的,几乎所有关
这个问题已经有答案了: What is the difference between SQL, PL-SQL and T-SQL? (6 个回答) 已关闭 9 年前。 我对 SQL 的了解足以完成我的
我在数据库中有一个 USER 表。该表有一个 RegistrationDate 列,该列有一个默认约束为 GETDATE()。 使用 LINQ 时,我没有为 RegistrationDate 列提供任
我有一个可能属于以下类型的字符串 string expected result 15-th-rp 15 15/12-rp 12 15-12-th
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 9年前关闭
我有一个存储过程(称为 sprocGetArticles),它从文章表中返回文章列表。这个存储过程没有任何参数。 用户可以对每篇文章发表评论,我将这些评论存储在由文章 ID 链接的评论表中。 有什么方
我目前正在做一个 *cough*Oracle*cough* 数据库主题。讲师介绍embedded SQL作为让其他语言(例如 C、C++)与(Oracle)数据库交互的方式。 我自己做了一些数据库工作
SQL Server 中 SQL 语句的最大长度是多少?这个长度是否取决于 SQL Server 的版本? 例如,在 DECLARE @SQLStatement NVARCHAR(MAX) = N'S
这个问题已经有答案了: Simple way to transpose columns and rows in SQL? (9 个回答) 已关闭 8 年前。 CallType
预先感谢您对此提供的任何帮助。 假设我有一个查询,可以比较跨年的数据,从某个任意年份开始,永无止境(进入 future ),每年同一时期直到最后一个完整的月份(其特点是一月数据永远不会显示至 2 月
我在数据库中有一个 USER 表。该表有一个 RegistrationDate 列,该列的默认约束为 GETDATE()。 使用 LINQ 时,我没有为 RegistrationDate 列提供任何数
下面是我试图用来检查存储过程是否不存在然后创建过程的 sql。它会抛出一个错误:Incorrect syntax near the keyword 'PROCEDURE' IF NOT EXISTS
我有一个同事声称动态 SQL 在许多情况下比静态 SQL 执行得更快,所以我经常看到 DSQL 到处都是。除了明显的缺点,比如在运行之前无法检测到错误并且更难阅读,这是否准确?当我问他为什么一直使用
来自 lobodava 的动态 SQL 查询是: declare @sql nvarchar(4000) = N';with cteColumnts (ORDINAL_POSITION, CO
使用 SQL Server 中的存储过程执行动态 SQL 命令的现实优点和缺点是什么 EXEC (@SQL) 对比 EXEC SP_EXECUTESQL @SQL ? 最佳答案 sp_executes
我有这个有效的 SQL 查询: select sum(dbos.Points) as Points, dboseasons.Year from dbo.StatLines dbos i
我正在调试一些构建成功运行的 SQL 命令的代码。 然而,在查询结束时,查询结果似乎被写入了一个文本文件。 完整的查询如下 echo SELECT DATE,DATETABLE,DATE,APPDAT
我有一些创建表的 .sql 文件(MS SQL 数据库): 表_1.sql: IF OBJECT_ID (N'my_schema.table1', N'U') IS NOT NULL DROP TAB
我写了下面的 SQL 存储过程,它一直给我错误@pid = SELECT MAX(... 整个过程是: Alter PROCEDURE insert_partyco @pname varchar(20
我在 SQL Server 2005 中有包含两列 Fruit 和 Color 的表,如下所示 Fruit Colour Apple Red Orange
我是一名优秀的程序员,十分优秀!