import
java
.
sql
.
Connection
;
import
java
.
sql
.
DriverManager
;
import
java
.
sql
.
PreparedStatement
;
import
java
.
sql
.
SQLException
;
public
class
TestPrepStatement
{
public
static
void
main
(
String
[]
args
)
{
if
(
args
.
length
!=
2
){
System
.
out
.
println
(
"Parameter Error ! Please Input Again!"
)
;
System
.
exit
(
-
1
)
;
}
String
name
=
args
[
0
]
;
int
age
=
0
;
try
{
age
=
Integer
.
parseInt
(
args
[
1
])
;
}
catch
(
NumberFormatException
e
){
System
.
out
.
println
(
"Parameter Error ! Age should be Number Format!"
)
;
System
.
exit
(
-
1
)
;
}
PreparedStatement
pstmt
=
null
;
Connection
conn
=
null
;
// 跟数据库连接先找到数据库管家DriverManager(连接哪种数据库)
// new出来mysql驱动类-class.forname
try
{
Class
.
forName
(
"com.mysql.jdbc.Driver"
)
;
// 此时会自动注册DriverManager,可以拿到跟数据库连接
conn
=
DriverManager
.
getConnection
(
"jdbc:mysql://localhost:3306/tab_demo?useSSL=false"
,
"root"
,
"123456"
)
;
// 现在已经连接到数据库上了,现在执行sql语句
// 创建一个语句对象Statement陈述语句的意思
String
sql
=
"INSERT INTO `tab_demo`.`inf` (`name`, `age`) VALUES (?,?)"
;
pstmt
=
conn
.
prepareStatement
(
sql
)
;
//准备好的sql执行语句生成,下面给占位符赋值
pstmt
.
setString
(
1
,
name
)
;
pstmt
.
setInt
(
2
,
age
)
;
int
insert
=
pstmt
.
executeUpdate
()
;
//执行数据库添加数据操作
System
.
out
.
println
(
insert
)
;
}
catch
(
ClassNotFoundException
e
)
{
// 驱动找不到报异常
e
.
printStackTrace
()
;
}
catch
(
SQLException
e
)
{
// 后面的SQL执行异常,通常记录在log文件里,用log for J开源框架记录在文件里
e
.
printStackTrace
()
;
}
finally
{
// 关闭资源
try
{
if
(
pstmt
!=
null
)
{
pstmt
.
close
()
;
pstmt
=
null
;
}
if
(
conn
!=
null
)
{
conn
.
close
()
;
conn
=
null
;
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
()
;
}
}
}}