JDBC对应C#连接数据库之区别

简单分析下和JDBC之间的区别,为像我这样的萌新提供一点帮助!

菜鸟一只,讲的比较基础,大神直接跳过吧!

下面正题

准备工作 
JDBC在这一步应该是导入对应的jar包,C#引入对应的DLL(这些东西网上搜一下都会有的,另外eclipse使用maven,vs使用nuget也都可以找到对应的资源,很方便!这里不再赘述)

MySQL为例

加载驱动

JDBC首先是加载驱动:

Class.forName("com.mysql.jdbc.Driver");  // 参数为对应database提供的驱动

C#是直接把DLL引入项目中了,这里应该是没有对应的步骤。(真要对应起来的话难道是using mysql.Data.MySqlClient ???)

获取连接

JDBC在这里应该就要开始获取数据库连接了:

Connection connection = DriverManager.getConnection(url, username, password);
/**
*参数说明:
*url : 待连接数据库的地址 类似于jdbc:mysql://localhost:3306/test 也可以将用户名密码添加在url之后直接传给getConnection方法
*username : 登录数据库需要的用户名
*password : username对应的密码
*/

ADO在这里同样也是获取数据库连接

MySqlConnection connection = new MySqlConnection(url);
/**
*参数说明:
*url:待连接数据库的地址。类似Server=localhost;Database=test;username=root;Password=root;
*因为MySqlConnection 只有无参和一个参数的构造方法,所以只能这样把username和password一起传给他。(也可能是我太笨,没找到可以设置username和password的方法!)
*/

获取statement和command

JDBC在这一步就是获取对应的Statement和PreparedStatement :

Statement statement = connection.createStatement();
或者
PreparedStatement pStatement = connection.prepareStatement(sql); //sql是需要执行的sql语句

ADO相同,但是好像没有无参和有参sql的区分:

MySqlCommand command = connection.CreateCommand();  
//也许是我没找到区分sql的类,不过有参和无参的sql都正常执行了,这个下面会讨论

设置sql参数

在这里都是设置参数,执行sql语句

带参数的sql语句在JDBC和C#中是不一样的

select * from user where id = ? ;   //这是jdbc

select * from user where id = @id;  //这是C#

JDBC:

    pStatement.setString(index, value); //index 是对应?的位置,从1开始


    //执行sql
    int res = statement.executeUpdate(sql); //增删改 返回受影响的行数
    或者
    ResultSet resultSet = statement.executeQuery(sql); //这个是返回结果集

ADO:

 command.CommandText = sql;
 command.Parameters.AddWithValue(parameterName, value);
 //parameterName对应sql中@后边的名字,value对应值。没有先后顺序(当然也有别的设置参数的方法,这个是比较直观的,其余的不在赘述,大家自己研究一下就行了)

//执行
connection.Open();
int res = command.ExecuteNonQuery(); //执行增删改对应的语句,返回受影响的行数
MySqlDataReader reader = command.ExecuteReader(); //执行查询的sql语句,返回一个DbDataReader对象

遍历结果集

然后就是遍历结果 
JDBC :

while(resultSet.next()){
            String id = resultSet.getString(1);   //根据索引获取结果,从1开始
            String name = resultSet.getString("name"); //根据列名获取结果
}

ADO :

 while (reader.Read())
    {
         object id = reader[0]; //根据索引获取,从0开始
         object name = reader["name"]; //根据列名获取

或者
        /*
         * string id = reader.getString(0);
         * string name = reader.getString("name");
        */                  
    }

 

关闭连接

最后都是需要释放相关的资源!!!(很重要)

最后都是需要释放相关的资源!!!(很重要)

最后都是需要释放相关的资源!!!(很重要)

 

转自:http://blog.csdn.net/qingming7573/article/details/53143180 

转载于:https://my.oschina.net/u/3058673/blog/1522875

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值