昨天看到了JDBC的那一章,要用到数据库,就百度了SQL下载安装了,安装完之后,才知道还要下载驱动,于是百度又下了mysql....jar的包,又搜索如何加入到项目中,
一切完成之后就开始加载去驱动连接数据库了
问题就来了。。
首先try catch 一下class.forName("com.mysql.driver")是没有异常的
也就是说,是这几条代码出了问题,再把connection try catch,发现有SQL异常
String url = "jdbc:mysql://127.0.0.1:11588/test728";
String user = "sa";
String password = "123456";
Connection con = DriverManager.getConnection(url,user,password);
也就是说这四句至少有一个出了问题。
首先我可以确定sa和密码都能登录,于是问题应该在url或者connection上,也有可能connection没问题,是getConnection的参数的url出了问题,。。。
在这里要插入一个问题,就是数据库占用的端口问题。
百度了一下有两种方法。
方法一:
打开数据库,新建查询,输入code,
可以看到端口号为11588
方法二:
在这里我还要插入一个我遇到的问题,就是IPALL的TCP动态端口是0,,,我的是0,,,
问题是SQLNAME的TCP/IP协议未开启
解决办法就是把它开启,然后再把SQLNAME的服务重新启动,这是必须的,否则更改无效。
还可以用cmd的netstat -an命令查看端口是否在使用
可以看到正常使用
把url写好之后try catch还是报错了,各种百度之后才发现问题,,,原来我下载的是SQL server 2008 然而url写的是 mysql 这两个数据库不是一家人。。。
于是乎,我又重新下载SQL的jar,重新加入项目,重新写代码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://127.0.0.1:11588;DatabaseName=test728";
String user = "sa";
String password = "123456";
Connection con = DriverManager.getConnection(url,user,password);
到这里try catch一下没有任何异常,,
下面就连接数据库插入一个表试试吧
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://127.0.0.1:11588;DatabaseName=test728";
String user = "sa";
String password = "123456";
Connection con = DriverManager.getConnection(url,user,password);
String sql = "insert into dbo.StuInfo (username,password,sex,age) values('张三','123','男',22)";
Statement sta = con.createStatement();
sta.executeUpdate(sql);
con.close();
} catch (SQLException e) {
// TODO: handle exception
System.out.println("error");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("class error");
}
编译运行无异常
以上是我本人遇到的问题,算挺多的
欢迎指正。