弘帝企业智能建站系统交流平台

 找回密码
 立即注册
查看: 2841|回复: 2

【C#】数据库操作小结

[复制链接]
发表于 2017-9-5 09:54:42 | 显示全部楼层 |阅读模式
1、常用的T-Sql语句
查询:SELECT * FROM tb_test WHERE ID=@id AND name=@name
SELECT * FROM tb_test

插入:INSERT INTO tb_test VALUES(@id,@name)
INSERT INTO tb_test(name) VALUES(@name)

更新:UPDATE tb_test SET password=@password WHERE ID=@id

删除:DELETE FROM tb_test WHERE ID=@id
DELETE tb_test WHERE ID=@id

2、在vs2010中获取数据库连接字符串
string connectionString = Properties.Settings.Default.DatabaseTestConnectionString;

3、SqlCommand类型
查询:
复制代码 代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlCommand command = new SqlCommand(selectStr, connection);
command.Connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
label1.Text = "name:" + reader["name"].ToString(); //数据读取
command.Connection.Close();
}
catch (SqlException ex)
{
throw ex;
}
}

插入、修改、删除:
复制代码 代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlCommand command = new SqlCommand(cmdStr, connection);
command.Connection.Open();
command.ExecuteNonQuery();
command.Connection.Close();
}
catch (SqlException ex)
{
throw ex;
}
}
以上为速度优势,推荐在前台使用,速度第一,安全第二,全靠程序员的编程水平!

下面为安全和灵活优势,也是本人最喜欢的编程实现方法,建议在后台使用,无关速度。
4、DataTable类型,查询、添加、修改、删除
DataTable使用查询、添加、删除、修改时,需要用到SqlDataAdapter类
string selectStr = "SELECT * FROM tb_test2";
查询:
复制代码 代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter(selectStr, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
//数据读取
label1.Text = dataTable.Rows[0][0].ToString();
}
catch (SqlException ex)
{
throw ex;
}
}

添加:
复制代码 代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter(selectStr, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
//添加数据
DataRow newRow = dataTable.NewRow();
newRow["id"] = "tesr";
newRow["name"] = "111";
dataTable.Rows.Add(newRow);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(dataTable); //更新到数据库
}
catch (SqlException ex)
{
throw ex;
}
}

修改:
复制代码 代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter(selectStr, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
//修改数据
DataRow updateRow = dataTable.Rows[0];
updateRow["id"] = "update";
updateRow["name"] = "222";
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(dataTable); //更新到数据库
}
catch (SqlException ex)
{
throw ex;
}
}

删除:
复制代码 代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter(selectStr, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataTable.Rows[0].Delete(); //删除记录
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(dataTable); //更新到数据库
}
catch (SqlException ex)
{
throw ex;
}
}

5、DataSet类型
DataSet操作跟DataTabel操作基本是一样的,只是DataSet可以储存有多个表格,所以就多做介绍了

6、个人总结
个人感觉,用 SqlCommand比较灵活,而DataSet是实现ADO.NET断开式连接的核心,比较安全


本文摘自网络,已经修正!
回复

使用道具 举报

 楼主| 发表于 2017-9-5 12:31:58 | 显示全部楼层

使用CommandBuilder对象插入

            //定义数据库连接对象

            SqlConnection connection=new SqlConnection(connectionString);

            //定义SQL字符串

            String MySQL = "Select * From  T_STUDENT;";

            //定义数据适配器对象

            SqlDataAdapter MyAdapter = new SqlDataAdapter(MySQL, connection);

            {

                try

                {

                    //打开数据库连接

                    connection.Open();

                    MyAdapter.SelectCommand = new SqlCommand(MySQL, connection);

                    //定义数据集对象

                    DataSet MyDataSet = new DataSet();

                    //填充数据集的数据

                    MyAdapter.Fill(MyDataSet, "T_STUDENT");

                    //定义数据表对象

                    DataTable MyTable =

                      MyDataSet.Tables["T_STUDENT"];

                    //定义一个全新的数据行对象

                    DataRow MyRow = MyTable.NewRow();

                    //定义数据行中各字段的值

                    MyRow["T_S_NAME"] = "陈超";

                    MyRow["T_S_SEX"] = "男";

                    MyRow["T_S_BIRTHDAY"] = "1985-09-11";

                    MyRow["T_S_ID"] = 2002080524;

                    MyRow["T_S_NATIONALITY"] = "汉";

                    MyRow["T_S_PHOTO"] = null;

                    //在内存中的表对象中添加一个新行,但此时新行的内容没有更新到数据源中

                    MyTable.Rows.Add(MyRow);

                    //定义命令绑定对象

                    SqlCommandBuilder MyCb=new SqlCommandBuilder (MyAdapter);

                    //调用数据适配器的Update方法,将新插入的数据更新到数据源中

                    MyAdapter.Update(MyDataSet, "T_STUDENT");

                    Console.WriteLine("成功更新数据库的数据!");

                }

                catch (SqlException ex)

                {

                    Console.WriteLine(ex.ToString());

                    Console.ReadLine();

                }

                finally

                {

                    connection.Close();

                    Console.ReadLine();

                    Console.WriteLine("成功关闭到SQL Server 2005数据库的连接");

                }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-5 12:33:27 | 显示全部楼层

使用CommandBuilder对象更新

//定义数据库连接对象

            SqlConnection connection = new SqlConnection(connectionString);

            //定义SQL字符串

            String MySQL = "Select * From  T_STUDENT;";

            //定义数据适配器对象

            SqlDataAdapter MyAdapter = new SqlDataAdapter(mysql, connection);

            {

                try

                {

                    //打开数据库连接

                    connection.Open();

                    //定义数据集对象

                    DataSet MyDataSet = new DataSet();

                    //用表T_STUDENT的内容填充数据集对象

                    MyAdapter.Fill(MyDataSet, "T_STUDENT");

                    //定义数据行对象

                    DataRow MyRow =

                        MyDataSet.Tables["T_STUDENT"].Rows[0];

                    //读者可以在这里更改字段的取值,然后可以发现数据库中的数据会被更改

                    MyRow["T_S_NAME"] = "赵军";

                    //定义命令绑定对象

                    SqlCommandBuilder MyCb=new SqlCommandBuilder(MyAdapter);

                    //提交更新

                    MyAdapter.Update(MyDataSet, "T_STUDENT");

                    Console.WriteLine("成功更新表中的数据");

                }

                catch (SqlException ex)

                {

                    Console.WriteLine(ex.ToString());

                    Console.ReadLine();

                }

                finally

                {

                    connection.Close();

                    Console.ReadLine();

                    Console.WriteLine("成功关闭到SQL Server 2005数据库的连接");

                }

            }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|弘帝企业智能建站系统 ( 皖ICP备07503252号 )

GMT+8, 2024-4-24 20:04 , Processed in 0.057975 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表