哇今天闲着没事准备把前几天链接数据库碰到的问题写到博客,写到一半浏览器切出去了,这个浏览器也没保存,晚上又写了一遍,唉 蛋疼呀╮(╯▽╰)╭!!
说一说连接数据库遇到的问题,唉问题繁多,原来自己刷的精简版盗版系统刚开始就打不开数据库安装包,后来刷了个原版的,链接不上去,后来就又刷了一遍系统(删注册表也装不上去),一些问题你们需要参考一下... 这个对framework 3.5需求很高,没装的,或者有问题的都装不上。。有时候我特么装了VS2013就装不了数据库,装了数据库就装不了VS
!!!呀呀呀
安装问题:
安装时到这一步尽量选混合模式自己输入密码,不用太复杂123456就得了,毕竟你是在学习,不是维护数据库. 如果 安装时是这样安装的只需要进行下面的步骤: 如果不是这样的 看红色标记后的内容... 打开sql配置工具如图: 把TCP/ip协议开启 就是后面的状态栏是已启用。她要求重启服务 可以点击第一个sql server服务重启启动那些正在运行的服务,----------我觉得你应该明白。。实在不行你也可以重启电脑呀哈哈!!! 第二个是端口问题 建议使用原来默认端口,因为不用改呀!!省的麻烦!一般那个端口不会被占用的,如果要改的话把TCP/ip的所有Ip改成一样的端口:不明白看下图: 下面是驱动问题:下载驱动包! https://pan.baidu.com/s/1hsb6VK4 Microsoft SQL Server JDBC Driver 3.0.zip 这是Microsoft SQL Server JDBC Driver驱动你也可以去官网下载,毕竟与时俱进可能更新了功能, 打开eclipse或者ME创建JAVA项目 点击你创建的java项目-右键-构建路径-添加外部归档(上面有个小奶瓶图标)把你下载的驱动解压,添加sqljdbc4.jar这个jar包:如图 之后你建一个类复制下面的代码运行就可以//shijiazhuangtiedaodaxue import java.sql.*; public class Conn { public static void main(String[] args) throws Exception { //Class.forName("com.mysql.jdbc.Driver"); //一开始必须填一个已经存在的数据库 String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=model;"; Connection conn = DriverManager.getConnection(url, "sa", "123456");// 连接数据库 Statement stat = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。 ResultSet resultSet=stat.executeQuery("select * From master.dbo.sysdatabases where name='hello'"); if (resultSet.next()) { System.out.println("table exist!"); //查询数据 stat.close();//关闭原来的对象 conn.close();//关闭原来的链接 url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=hello;"; conn = DriverManager.getConnection(url, "sa", "123456");// 连接数据库如果你的密码不是123456是要改的默认sa用户不用改的 stat = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。 ResultSet result = stat.executeQuery("select * from SQLtest"); while (result.next()) { System.out.println("学号 "+result.getInt("id") + " 名字 " + result.getString("name")+" 年龄 "+result.getInt("Age")); } //关闭数据库 result.close(); stat.close(); conn.close(); }else{ //创建数据库hello stat.executeUpdate("create database hello"); //打开创建的数据库 stat.close(); conn.close(); url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=hello;"; conn = DriverManager.getConnection(url, "sa", "123456");// 连接数据库 stat = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。 //创建表SQLtest stat.executeUpdate("create table SQLtest(id int, name varchar(80),Age int)"); //添加数据 stat.executeUpdate("insert into SQLtest values(20163678, '胡粑粑',18)"); stat.executeUpdate("insert into SQLtest values(20163679, '李麻麻',19)"); stat.executeUpdate("insert into SQLtest values(20163620, '习哒哒',20)"); System.out.println("create table success!"); ResultSet result = stat.executeQuery("select * from SQLtest"); while (result.next()) { System.out.println("学号 "+result.getInt("id") + " 名字 " + result.getString("name")+" 年龄 "+result.getInt("Age")); } //关闭数据库 result.close(); stat.close(); conn.close(); } } }
里面会为你建一个数据库和表,并读出里面的内容,如果表存在则直接读出里面的内容,自己写的代码,还是新手,代码没那么精简。。。勿喷
如果你安装时没有创建密码需要创建密码
如图:
点安全性-登录名-打开登陆属性-按照图中的操作改成你需要的密码.....
查看你的登陆属性第四个选项--- 状态是不是启用和授予--如果不是改成启用和授予。
然后重新打开SQL Server Management Studio 使用SQL server身份验证登陆 账户为sa 密码是你自己设的如果登陆成功,证明你密码修改成功
1准备JDBC驱动
驱动下载地址
选择sqljdbc_7.2.2.0_chs.exe下载
接下来打开,设置路径,点击"unzip",解压到任意目录。
解压出的文件夹中有很多文件,但我们只需要三个“mssql-jdbc-7.2.2.jre8.jar”,“mssql-jdbc-7.2.2.jre11.jar”,“sqljdbc_auth.dll”(dll有两种,64位系统使用x64文件夹下的,32位用x86下的)
将“mssql-jdbc-7.2.2.jre8.jar”,“mssql-jdbc-7.2.2.jre11.jar”移动到java工程的lib文件夹下,之后在工程中导入对应java版本的jar
将“sqljdbc_auth.dll”移动到java安装目录\JDK\bin下
2数据库设置
打开Sql Server配置管理器
网络配置->MSSQLSERVER->TCP/IP,启动TCP/IP
接下来右键TCP/IP->属性->IP地址,将IP0,IP10,IPALL改为如下图属性
重启数据库后要检查1433端口是否打开
在cmd里输入netstat -an|findstr 1433
输出为下图时表示1433端口开启
2.java代码#
代码中的IPv4地址可以在cmd中用ipconfig得到
Copyimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class JDBCTest {
public static void main(String[] args) {
String connectionUrl =
"jdbc:sqlserver://(你的IPv4IP):1433;databaseName=选择的数据库;integratedSecurity=false;";
try (Connection con = DriverManager.getConnection(connectionUrl, "数据库用户名", "密码");
Statement stmt = con.createStatement();) {
String SQL = "SELECT TOP 10 * FROM uDept;(这里为输入的SQL语句)";
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
System.out.println(rs.getString("表中的列名"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package connect; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class SqlServerTest { public static void main(String[] args) { try { //一开始必须填一个已经存在的数据库 String url = "jdbc:sqlserver://xxxxxip:1433;DatabaseName=xxxxx;"; Connection conn = DriverManager.getConnection(url, "sa", "xxxx");// 连接数据库 Statement stat = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。 ResultSet resultSet=stat.executeQuery("select * From ZKECO.dbo.ipos_meal"); ResultSetMetaData md = resultSet.getMetaData(); List list = new ArrayList(); int columnCount = md.getColumnCount(); while (resultSet.next()) { Map rowData = new HashMap(); for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), resultSet.getObject(i)); } list.add(rowData); } System.out.println("list====="+list); //关闭数据库 resultSet.close(); } catch (Exception e) { e.printStackTrace(); } } }