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

之前一直在用java,最近因为找了.NET的工作,开始学习.NET。
今天也是查了好多资料,但是一直没有看到和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一起传给他。
*/

获取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语句在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开始
String name = resultSet.getString("name"); //根据列名获取结果
}

ADO :

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

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

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

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

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

最新文章

  1. Spark 入门
  2. iPad 多任务 Spilt View & Size Class
  3. Dubbo超时和重连机制
  4. eclipse如何导入项目
  5. 北京大学信息科学技术学院计算机专业课程大纲选摘--JAVA
  6. MVC 读书笔记
  7. Spring(3.2.3) - Beans(9): @Resoure & @Autowired
  8. SQL Server2000企业管理器在Win7中新建表错误的解决方法
  9. 了解mongodb
  10. 在Java环境上运行redis
  11. shell编程值之正则表达式与字符截取(6)
  12. Docker 创建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 单点登录
  13. 移动端适配——font-size计算
  14. 手机端适配方案 媒体查询和flexbale
  15. JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)
  16. c#位运算小例子笔记
  17. 开启Apache Server Status
  18. uva10160(dfs+状态压缩)
  19. JavaScript数据结构-9.循环链表
  20. 数据库 Oracle数据库对象二

热门文章

  1. CodeFroces New Assignment 二分图匹配
  2. Shell字符串比较相等、不相等方法小结
  3. 吴裕雄--天生自然KITTEN编程:对话
  4. 对话|人工智能先驱Yoshua Bengio
  5. IPFS初窥
  6. Mac开发环境部署
  7. jq拖拽插件
  8. 达拉草201771010105《面向对象程序设计(java)》第十四周学习总结
  9. 从0开始学Git——Git的常用配置
  10. linux同步当前网络时间