本帖最后由 xywhere 于 2013-8-15 21:25 编辑 很久很久不用它了,有些自己都看不懂了,有缘人来拿走吧。 偶然发现的,貌似对数据库最后一个实验有些帮助,对以后软院的.net课程也有一定帮助吧 1. 数据库连接-Connnection类: //初始化一个Connnection对象 using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename= |DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")) //创建命令方法返回一个SqlCommand’ SqlCommand cmd = conn.CreateCommand() //打开连接 conn.Open(); //关闭连接 conn.Close(); 2. 执行SQL命令-Command类 //初始化一个Command对象 SqlCommand cmd = conn.CreateCommand(); //用查询文本初始化 SqlCommand cmd = SqlCommand(string cmdText); //执行查询命令,返回DataReader对象 SqlDataReader reader = cmd.ExecuteReader(); //执行非查询语句(插入,更新,删除),返回影响行数 int i = cmd.ExecuteNonQuery(); //执行查询,并返回查询结果集的第一行,第一列,忽略其他行和列,返回类型为Object object o = cmd.ExecuteScalar(); 3. 提供数据库DataReader 类 //执行查询命令,返回DataReader对象 SqlDataReader reader = cmd.ExecuteReader(); //使 System.Data.SqlClient.SqlDataReader 前进到下一条记录,,如果存在多个行,则为 true;否则为 false reader.Read(); //获取指定列的字符串形式的值。参数:i:从零开始的列序号。 reader.GetString (i); //获取列序号,参数为列名 reader.GetOrdinal("proId") //i为列号,name为列名,返回值为Object 需要转换 object reader[int i] object reader[string name] //参数化查询 @后可以随意起名字 cmd.CommandText = "select count(*) from table2 where name=@username and password=@password"; cmd.Parameters.Add(new SqlParameter("username", username)); cmd.Parameters.Add(new SqlParameter("password",password)); 4 使用配置文件 右击->项目->添加新建项->应用程序配置文件,写入以下代码,配置字符串连接 <connectionStrings> <add name="Connstr" connectionString="Data Source=.\SQLEXPRESS;AttachDBFilename= |DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"/> </connectionStrings> 右击->引用->添加引用 System.Configuration 以下为用法 //获取连接字符串 string connStr=ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString ; //初始化连接 using (SqlConnection conn = new SqlConnection(connStr )) 5 简化操作创建SQLHelper类 class SQLHelper // params 可实现多个参数 { //第一个参数sql语句,第二个为可变参数,返回所影响的行数 public static int ExecuteNonQuary(string sql, params SqlParameter[] parameters) { String connStr= ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString ; using (SqlConnection conn = new SqlConnection(connStr )) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } return cmd.ExecuteNonQuery(); } } } public static object ExecuteScalar(string sql, params SqlParameter[] parameters) { string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } return cmd.ExecuteScalar(); } } } * *///这种方法不适合,读取数据不能断开连接 /* public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters) { string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } return cmd.ExecuteReader(); } } } public static DataTable ExecuteDataTable (string sql, params SqlParameter[] parameters) { string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } DataSet dataset = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataset); return dataset.Tables[0]; ; } } } } 用法: 1.SQLHelper.ExecuteNonQuary("insert into T_person(Name,Age) values(@name,@age)",new SqlParameter("name",name),new SqlParameter("age",age)); 2.object i= SQLHelper.ExecuteScalar("select count(*) from T_person"); 3.DataTable table= SQLHelper.ExecuteDataTable("select * from T_person"); 6. DataAdatp和DataSet 的用法 //使用DataSet 对象获取数据 string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); DataSet dataset=new DataSet(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "select * from T_person"; //DataAdapter 执行命令取出数据 SqlDataAdapter adapter = new SqlDataAdapter(cmd); //填充数据集 adapter.Fill(dataset ); //返回数据集中第一个表 DataTable table = dataset.Tables[0]; //返回表中第一列 DataRow row = table.Rows[0]; //打印出列中的Name字段 Console.WriteLine(row["Name"]); } } //使用DataApapter 对象更新数据 方法1 string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); DataSet dataset=new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(); //创建插入命令,也可以创建查询,更新,删除道理一样 adapter.InsertCommand = conn.CreateCommand(); adapter.InsertCommand.CommandText = "insert into T_person(Name,Age) values('abc','123')"; adapter.InsertCommand.ExecuteNonQuery(); } 方法2 string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); DataSet dataset=new DataSet(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "select * from T_person"; SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataset ); DataTable table = dataset.Tables[0]; DataRow row = table.Rows[0]; row["Name"] = "jason1235"; //对dataset的修改都是内存中的没有提交到数据库 //用adapter.update(dataset) //SqlCommandBuilder自动生成你要更改数据的Sql语句 SqlCommandBuilder builder = new SqlCommandBuilder(adapter); adapter.Update(dataset); } } 7.数据库中空数据在C#中的表示方法 int? =null; 加个问号表示可空的int int? i = null; if (i == null) { //int i1 =(int) i; //把可能为空的转换为一定不空的 要强制类型转换 保证不空 Console.WriteLine("i3为空"); } if (i.HasValue) { int i2 = i.Value ;//第二种方法 Console.WriteLine("不为空"); } else { Console.WriteLine("为空"); } 8.类型化数据集的用法 右击项目->添加->新建项->数据集->然后把一张表拖入数据集中就会自动生成 //实例化一个类型化数据集类命名方式为 : 表名+TableAdapter T_personTableAdapter adapter = new T_personTableAdapter(); //命名空间.数据集名.表名+DataTable(就是一张表) 获取数据 Dataset版登陆.DataSet1.T_personDataTable data = adapter.GetData(); //data.count返回表中行数 for (int i = 0; i < data.Count; i++) { // data;定位所用的行 i代表行数 Dataset版登陆.DataSet1.T_personRow userRow = data; // userRow.Name 定位所用的字段 Console.WriteLine(userRow.Name ); } |
[技术| 编程·课件·Linux] ADO.Net小总结
xywhere
· 发布于 2013-08-15 21:22
· 2838 次阅读
转载文章时务必注明原作者及原始链接,并注明「发表于 软院网 RuanYuan.Net 」,并不得对作品进行修改。
terry 发表于 2013-8-17 16:39 。。。。 |
sanjican 发表于 2013-8-17 20:52 进化。。。 |
阎魔あい 发表于 2013-8-18 12:23 不累啊 现在还行吧 适应了 。。节奏 很好 |
没用了 |