java和数据库连接问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java和数据库连接问题相关的知识,希望对你有一定的参考价值。
String a1 = "INSERT INTO childimfo VALUES("+"\'"+NameText.getText()+"\',"+"\'"+SexText.getText()+"\',"+"\'"+AgeText.getText()+"\',"+"\'"+ClassNumText.getText()+"\',"+"\'"+Person1NameText+"\',"+"\'"+Person1SexText.getText()+"\',"+"\'"+Person1PhoneText.getText()+"\',"+"\'"+Relationship1Text.getText()+"\',"+"\'"+Person2NameText+"\',"+"\'"+Person2SexText.getText()+"\',"+"\'"+Person2PhoneText.getText()+"\',"+"\'"+Relationship2Text.getText()+"\',"+"\'"+CardNumText.getText()+"\',"+"\'"+PassWordText.getText()+"\')";// 插入数 据SQL语句
stmt.executeUpdate(a1);// 执行SQL命令对象
删除这两句后能成功运行,估计是这一句的错误,数据库源代码如下;
create table childimfo(
Cno int identity(1, 1) primary key,
Cname char(8) not null,
Csex char(2)
constraint c1 check(Csex in('男','女')),
Cage char(1)
constraint c2 check(Cage<=6),
Class char(4),
Pname1 char(8) not null,
Psex1 char(3)
constraint c2 check(Csex in('男','女')),
Phone1 varchar(11),
Relationship1 char(10) not null,
Pname2 char(8) not null,
Psex2 char(3)
constraint c3 check(Csex in('男','女')),
Phone2 varchar(11),
Relationship2 char(10) not null,
Card varchar(6) nut null,
Code varchar(6) not null
);
INSERT INTO childimfo VALUES("'"+NameText.getText()+"','"+SexText.getText()+"'"。。。。。。。。)追问
不对吧,不转义怎么更新?、
追答这句sql语句是到数据库里执行的不是吗,你把你转义前和转义后的sql语句分别打印出来,一看便知,双引号里的单引号就是个普通的字符串罢了
追问还是有错误,显示SQL无法接受的字符串和二进制数据。
参考技术A 正如上面说的转义是不需要的,Statement与PreparedStatement用法一样,但是后者是事先在Class中就预编译好再去调数据库,比Statement快,不过初学者用没多大差别的 参考技术B 为什么不用PreparedStatement??追问具体怎么用,不会用喂。。
求助高手帮我解决java中连接数据库时配置文件的问题,总是抛出空指针的异常
这是我的DBUtil.java文件 用来连接数据库和读取配置文件
package com.lore.db;
import java.sql.*;
import java.util.*;
import java.io.*;
public class DBUtil
private String driver;
private String url;
private String uid;
private String pwd;
public void config()
try
InputStream is = this.getClass().getResourceAsStream(
"dbconfig.properties");
Properties prop = new Properties();
prop.load(is);
this.driver = prop.getProperty(driver);
System.out.print(driver);
this.url = prop.getProperty(url);
System.out.print(url);
this.uid = prop.getProperty(uid);
System.out.print(uid);
this.pwd = prop.getProperty(pwd);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
public Connection getConn()
Connection conn = null;
try
this.config();
Class.forName(driver);
conn = DriverManager.getConnection(url, uid, pwd);
catch (Exception ex)
ex.printStackTrace();
return conn;
public static void main(String arg[])
DBUtil db = new DBUtil();
System.out.println(db.getConn());
这个是我的配置文件dbconfig.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user
uid=root
pwd=olcp
数据库名 用户名 密码都没错 但是一运行就会报空指针的错误 下面是报的错
java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:334)
at java.util.Properties.getProperty(Properties.java:932)
at com.lore.db.DBUtil.config(DBUtil.java:20)
at com.lore.db.DBUtil.getConn(DBUtil.java:37)
at com.lore.db.DBUtil.main(DBUtil.java:49)
null
是这行抛异常了,看异常也能找到。是你带吗的第20行。
是你的prop是空对象,说明:
InputStream is = this.getClass().getResourceAsStream(
"dbconfig.properties");
Properties prop = new Properties();
没有读取到配置文件,请仔细检查配置文件是否存在。
如果是在src根目录里 加
InputStream is = this.getClass().getResourceAsStream(
"classpath:dbconfig.properties"); 参考技术A dbconfig.properties这个文件没有读到会出现该异常
dbconfig.properties这个文件放在classpath下。如果是使用eclipseIDE你可以放在src目录下。或者创建一个源码目录,放在下面也可以找到。
你也可以通过其它方式设置classpath来找到这个文件 参考技术B 我们是这样写的:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/score?autoReconnect=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
注意url里面我加了字符集 参考技术C dbconfig.properties这个文件和你的类放在同一个包里吗?如果dbconfig.properties是放在src里的你试试InputStream is = this.getClass().getResourceAsStream( "/dbconfig.properties"); 参考技术D 配置文件的路径放错了,或是你的路径指向不对。找不到配置文件就报那个错了。
以上是关于java和数据库连接问题的主要内容,如果未能解决你的问题,请参考以下文章
求助高手帮我解决java中连接数据库时配置文件的问题,总是抛出空指针的异常