package skydevkit;
import java.sql.*;
public class JdbcOdbc_test {
ResultSet results;
ResultSetMetaData rsmd;
DatabaseMetaData dma;
Connection con;
public JdbcOdbc_test() throws SQLException {
String url = "jdbc:odbc:Northwind";
try {
//加载 JDBC-ODBC 桥驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url);//连接数据库
dma = con.getMetaData();//获取数据库的元数据
System.out.println("Connected to:" + dma.getURL());
System.out.println("Driver " + dma.getDriverName());
} catch (Exception e) {
System.out.println(e);
}
try {
Statement stmt = con.createStatement();
results = stmt.executeQuery("select * from 客户;");
ResultSetMetaData resultMetaData = https://minzuwang.com/read/results.getMetaData();
int cols = resultMetaData.getColumnCount();
String resultRow = "";
for (int i = 1; i < cols; i++) {
resultRow += resultMetaData.getColumnName(i) + ";";
}
System.out.println(resultRow);
while (results.next()) {
resultRow = "";
for (int i = 1; i < cols; i++) {
try {
resultRow += results.getString(i) + ";";
} catch (NullPointerException e) {
System.out.println(e.getMessage());
}
}
System.out.println(resultRow);
}
} catch (Exception e) {
System.out.println("query exception");
} finally {
results.close();
}
}
}
补充高级内容
关于调用SQLServer存储过程的例子:
CREATE PROCEDURE [dbo].[sp_getStudentByName](@name char(10))
AS
Select * from Students where [Name]=@name
GO
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
CallableStatement pstmt = null;
System.out.println("TestDB1()............");
/* try {
pstmt = con.prepareCall("{call sp_getStudentById(?)}");
pstmt.setInt(1, 1);
}*/
try {
pstmt = con.prepareCall("{call sp_getStudentByName(?)}"); //注意参数如何传递
pstmt.setString(1, "Tom");
}
……
使用输出参数:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY
GO
try {
pstmt = con.prepareCall("{call sp_insertStudent(?,?,?)}");
pstmt.setString(1, "zengqingsong");
pstmt.setInt(2, 22);
pstmt.registerOutParameter(3, Types.INTEGER);
pstmt.executeUpdate();
int id = pstmt.getInt(3);
System.out.println(id);
}
使用返回参数的例子:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY –测试输出参数
return 30 –测试返回30
GO
try {
pstmt = con.prepareCall("{?=call sp_insertStudent(?,?,?)}");
pstmt.setString(2, "zengqingsong");
pstmt.setInt(3, 22);
pstmt.registerOutParameter(4, Types.INTEGER);
pstmt.registerOutParameter(1, Types.INTEGER);
int ret = pstmt.executeUpdate(); //执行影响的行数
int ret2 = pstmt.getInt(1); //返回参数
int id = pstmt.getInt(4); //输出参数
System.out.println(ret);
System.out.println(ret2);
System.out.println(id);
我想知道什么是数据库?:
文章插图
【什么是数据库】数据库本身就好比一个“大池”,你把它装满水,他就是“水池”,装满油就是“油池”,装满沙子就是“沙池” 。它就是个容器,数据的容器,至于往里面装什么数据,怎么装,那就要看设计“某方面功能的数据库”的人怎么设计了 。
底层的数据库也就是“池子”是一样的,但是怎么把数据放进去,那就是要看怎么设计了 。
比如,为了增加可玩性,我可以吧水都装在气球中然后再把气球放进池子类似这种,再比如我不直接放水,而是放冰,还可以是只放某一种类型的冰,比如正方形的冰等等 。
也就是说在底层数据库的基础上,怎么放置数据这也是很多人说的数据库的设计 。
推荐阅读
- 男人颈部痣相图解大全 男人脖子长痣说明什么
- 临床医学应届毕业生求职简历 2021应届毕业生个人求职简历
- 柴达木盆地位于我国的什么高原 柴达木盆地位于哪个高原我们学过的
- 5类人不宜喝玉米汁,打玉米汁是放大米还是小米
- 农历正月是几月份,农历正月是什么星座
- QQ语音时,总是听到自己的回声和对方电脑里的声音的解决办法 正在qq语音别人打会知道吗?
- 五行对应表
- 2021年江苏人均养老金替代率是多少呢
- 如何通过投资赚钱? 什么项目投资小赚钱快?
- 山根高的面相好不好 山根高说明了什么