c#操作数据库的增删改查语句及DataGridView简单使⽤
下⾯是要⽤户名和密码连接数据库的操作:
⼀、定义连接字符串,⽤来链接SQL Server
string str_con = "server=.(服务器名称⼀般为 . );database=WordBook(数据库名称);uid=sa(服务器登录名);pwd=123(服务器密码)";⼆、有了链接字符串之后,开始数据库操作
1、数据库查询
定义了⼀个查询⽅法,⽤来调⽤:
public DataSet queryDatabase(string sql)    //sql是查询语句
{
//储存数据的⼯具初始化
DataSet ds = new DataSet();
//相当于链接数据库的⼀个⼯具类(连接字符串)
using (SqlConnection con = new SqlConnection(str_con))
{
con.Open();  //打开
//⽤SqlConnection⼯具链接数据库,在通过sql查询语句查询结果现存⼊sql适配器
SqlDataAdapter sda = new SqlDataAdapter(sql,con);  //(查询语句和连接⼯具)
sda.Fill(ds);    //将适配器数据存⼊DataSet⼯具中
con.Close();  //⽤完关闭SqlConnection⼯具
return ds;
}
}
在需要查询数据库的地⽅调⽤此⽅法:
private void query() {
/
/查询WordBook表中,book_key字段数值为7的那⼀⾏数据
//string sql = "select * from Word_Book where book_key='7'";
string sql = "select * from Word_Book ";    //查询全表
DataSet ds = help.queryDatabase(sql);        //查询到数据
DataTable dt = ds.Tables[0];                      //把查到的数据存⼊数据表中
sqlDataResult.DataSource = dt;                  //把数据赋值给gridView展⽰(全表)
// string str=dt.Rows[0][1].ToString();//查表中某⼀个内容
// MessageBox.Show(str);
}
2、数据库添加、删除、修改
C#中数据库的添加、删除、修改⽤的是同断代码,所以定义了⼀个⽅法,⽤来调⽤:
public int changeSqlData(String sql)
{
using(SqlConnection con=new SqlConnection(str_con))
{
con.Open();
//操作数据库的⼯具SqlCommand
SqlCommand cmd = new SqlCommand(sql, con);//(操作语句和链接⼯具)
int i=cmd.ExecuteNonQuery();//执⾏操作返回影响⾏数()
con.Close();
return i;
}
}
在需要操作数据库的地⽅调⽤此⽅法:
①数据库添加:
private void btn_add_Click(object sender, EventArgs e)
{
//sql添加数据 insert into 表名(字段,字段...) values(‘内容’,‘内容’...)
string sql = "insert into Word_Book(book_word_CN,book_word_JP,book_word_Roma,book_nominal," +
"book_gloze) values('" + book_word_CN.Text.Trim()+"','"+ book_word_JP .Text.Trim() + "','"
+ book_word_Roma .Text.Trim() + "','"+ book_nominal.Text.Trim() + "','" + book_gloze.Text.Trim() + "')";
int i=help.changeSqlData(sql);
if (i == 0) MessageBox.Show("添加失败", "提⽰:");
else MessageBox.Show("添加成功", "提⽰:");
}
②数据库删除:
private void btn_delete_Click(object sender, EventArgs e)
{
//根据同个字段中不同内容删除多⾏
//delete from Word_Book where book_key in (1,2,3)
//sql删除数据delete 表名 where 字段='内容'单个条件⽤or链接,多个条件⽤and链接
string sql = "delete from Word_Book where book_key='"+book_key.Text.Trim()+"'";
int i=help.changeSqlData(sql);
if (i == 0) MessageBox.Show("删除失败", "提⽰:");
else MessageBox.Show("删除成功", "提⽰:");
}
②数据库更新:
private void btn_update_Click(object sender, EventArgs e)
{
//根据条件修改多个字段内容
//update 表名 set 字段='内容', 字段='内容' where 条件字段='内容'
string sql = "update Word_Book set book_word_CN='"+book_word_CN.Text.Trim()+
"', book_word_JP='"+book_word_JP.Text.Trim()+"'where book_key='" + book_key.Text.Trim()+"'";
int i = help.changeSqlData(sql);
if (i == 0) MessageBox.Show("修改失败", "提⽰:");
else MessageBox.Show("修改成功", "提⽰:");
}
3、数据库事务操作数据库
⽤数据库事务相当于把数据库操作捆绑执⾏,只要其中⼀条sql语句失败,直接返回,不进⾏数据库操作,只有全部执⾏正确,才会更新数据库。定义了⼀个查询⽅法,⽤来调⽤:
public bool openTrans(List<String> lst)
{
using (SqlConnection con=new SqlConnection(str_con))
{
con.Open();
//开启事务
SqlTransaction trans = con.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;//添加链接⼯具
cmd.Transaction = trans;//添加事务
try
{
for (int i = 0; i < lst.Count; i++)
{
string sql=lst[i].ToString();//获取sql语句
cmd.CommandText = sql;//添加sql语句
cmd.ExecuteNonQuery();//执⾏
}
trans.Commit();//执⾏完成之后提交
return true;
}
catch(Exception e)
{
//执⾏sql语句失败,事务回滚
trans.Rollback();
return false;
}
finally
{
con.Close();
sqltransaction什么意思}
}
}
在需要操作数据库的地⽅调⽤此⽅法:
private void transql_Click(object sender, EventArgs e)
{
List<string> lst = new List<string>();
lst.Add("update Word_Book set book_word_CN='" + book_word_CN.Text.Trim() +
"', book_word_JP='" + book_word_JP.Text.Trim() + "'where book_key='" + book_key.Text.Trim() + "'");
lst.Add("update Word_Book set book_word_Roma='" + book_word_Roma.Text.Trim() +
"', book_nominal='" + book_nominal.Text.Trim() + "'where book_key='" + book_key.Text.Trim() + "'");
Boolean isOk= help.openTrans(lst);
if (!isOk) MessageBox.Show("修改失败", "提⽰:");
else MessageBox.Show("修改成功", "提⽰:");
}
C#增删改查操作完成,想要⽅便可以⾃定义⼀个类,把所有的⽅法写在⾥⾯,当有⽤到的时候可以初始化该类的实例⽤来调⽤类⾥的⽅法在VS2012中新建⼀个Windows窗⼝应⽤程序,并在Form中放置DataGridView和Button两个控件,在Button的单击响应事件中连接数据库:private void button1_Click(object sender, EventArgs e)
{
String connsql = "server=.;database=MyDBName;integrated security=SSPI"; // 数据库连接字符串,database设置为⾃⼰的数据库名,以Windows⾝份验证
try
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = connsql;
conn.Open(); // 打开数据库连接
String sql = "select * from student"; // 查询语句
SqlDataAdapter myda = new SqlDataAdapter(sql, conn); // 实例化适配器
DataTable dt = new DataTable(); // 实例化数据表
myda.Fill(dt); // 保存数据
dataGridView1.DataSource = dt; // 设置到DataGridView中
conn.Close(); // 关闭数据库连接
}
}
catch (Exception ex)
{
MessageBox.Show("错误信息:" + ex.Message, "出现错误");
}
}
该类中封装了关于数据库连接和操作的⽅法,各个功能模块在需进⾏数据库操作时只需调⽤相应的函数:
//引⼊的命名空间
using System.Data.SqlClient;//⽤于SQL Sever数据访问的命名空间
using System.Data;              //DataSet类的命名空间
using System.Windows.Forms;  //DataGridView控件类的命名空间
//执⾏指定的SQL命令语句(insert,delete,update等),并返回命令所影响的⾏数
public static int executeCommand(string sqlStr)
{
SqlConnection sqlConnection1 = new SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//创建数据库连接(字符串中是我个⼈的数据库信息)    sqlConnection1.Open();      //打开数据库连接
SqlCommand sqlCommand1 = new SqlCommand(sqlStr, sqlConnection1);  //执⾏SQL命令
int Succnum = sqlCommand1.ExecuteNonQuery();
return Succnum;
}
//查询(select)指定的数据记录(多⾏多列),并填充到数据控件DataGridView中
public static void queryDataToGrid(string sqlStr, DataGridView dataGridView1)
{
SqlConnection sqlConnection1 = new SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//创建数据库连接
SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlStr, sqlConnection1);//利⽤已创建好的sqlConnection1,创建数据适配器sqlDataAdapter1
DataSet dataSet1 = new DataSet();  //创建数据集对象
sqlDataAdapter1.Fill(dataSet1);    //执⾏查询,查询的结果存放在数据集⾥
dataGridView1.DataSource = dataSet1.Tables[0]; //把数据集中的查询结果绑定到dataGridView1中
}
//查询(select)指定的数据(单个数据,假设为string类型),并返回
public static string queryData(string sqlStr)
{
SqlConnection sqlConnection1 = new SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//创建数据库连接
SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlStr, sqlConnection1);//利⽤已创建好的sqlConnection1,创建数据适配器sqlDataAdapter1
DataSet dataSet1 = new DataSet();  //创建数据集对象
sqlDataAdapter1.Fill(dataSet1);    //执⾏查询,查询的结果存放在数据集⾥
return dataSet1.Tables[0].Rows[0]["列名"].ToString(); //把查询结果的第⼀⾏指定列下的数据以string类型返回
}
View Code
当在各个功能模块中需要进⾏数据库操作时,只需指定要执⾏的SQL语句,调⽤⼀下数据库⼯具类中的⽅法即可实现,下⾯给了⼀些基本的的SQL 操作(单表)
//增
sqlStr = "insert into 表名( 列名1 , 列名2 )values( 插⼊值1 , 插⼊值2 )";
//执⾏指定的SQL命令语句,并返回命令所影响的⾏数
int Succnum = uteCommand(sqlStr);
if (Succnum > 0) MessageBox.Show("录⼊成功");
//删
sqlStr = "delete from 表名 where 删除条件";
int Succnum = uteCommand(sqlStr);
if (Succnum > 0) MessageBox.Show("删除成功");
//改
sqlStr = "update 表名 set 列名1 = 更新值1 , 列名2 = 更新值2";
int Succnum = uteCommand(sqlStr);
if (Succnum > 0) MessageBox.Show("更新成功");
//查⼀组数据
sqlStr = "select 列名1 , 列名2 from 表名 where 查询表达式";
MyTool.queryDataToGrid(sqlStr, dataGridView1);//填充到数据控件DataGridView中
//查单个数据
sqlStr = "select 列名 from 表名 where 查询表达式";
textBox1.Text = MyTool.queryData(sqlStr);//填充到⽂本框textBox1中
View Code

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。