zoukankan      html  css  js  c++  java
  • 【转】Java JDBC对应C# ADO连接数据库之区别

    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);   //根据索引获取结果,从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");
            */                  
        }

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

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

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

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

  • 相关阅读:
    洛谷 P1236 算24点
    洛谷 P1483 序列变换
    洛谷 P2071 座位安排 seat.cpp/c/pas
    洛谷 P3079 [USACO13MAR]农场的画Farm Painting
    洛谷 P3912 素数个数
    洛谷 P1617 爱与愁的一千个伤心的理由
    洛谷 P1894 [USACO4.2]完美的牛栏The Perfect Stall
    hdu_5908_Abelian Period(暴力)
    hdu_4283_You Are the One(区间DP)
    hdu_5903_Square Distance(dp)
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/11783375.html
Copyright © 2011-2022 走看看