连接sql server数据库用到的命名空间是using System.Data.SqlClient;
数据库连接代码:可以在大类之下声明 public SqlConnection myConnection;
//sql连接对象
publicSqlCommand myCmd;
//用于存储sql语句的对象
另一种读取对象是datasetpublic SqlDataReader myreader;
//用于读取数据库的对象
SqlConnection myConnection;
的用法是在其构造函数内指明连接字符串
myConnection = new SqlConnection("连接字符串");
可以用配置文件来保存该链接文件,这样即便更换SQL SERVER数据库的服务器,只要在解决方案里改变配置文件app.config里的连接字符串就可以了。具体的操作是:在VS中双击属性,在出现的对话框中选"设置",在里面填好"名称","类型","值"。要记住你添的名称(假设为connectionstring)。再在代码中声明一个字符串变量str,给他赋值为:Properties.Settings.Default.connectionstring;
然后 myConnection = new SqlConnection("str");
myConnection.Open();
就可以连接数据库了。
SqlCommand myCmd;
的用法是在其构造函数内写出sql语句和连接字符串对象
myCmd = new SqlCommand("sql语句",myConnection);
这只是存储sql语句,还没有把它交给数据库处理,要交给数据库处理可以用 myCmd.ExecuteNonQuery();
该方法是执行myCmd内的sql语句,并返回int型的受影响的行数, 更多用的是 SqlDataReader myreader读取数据库的对象.
SqlDataReader myreader;
只能通过SqlCommand myCmd的ExecuteReader()创建实例 用法是:
myreader = myCmd.ExecuteReader();
创建 SqlDataReader实例的同时,向数据库提交了sql语句
用SELECT语句查询数据后可以用myreader.Read()来判断数据库中有没有要查询的数据,该方法返回的是一个布尔类型,如果myreader.Read()返回true说明数据库中有要查询的数据,反之,说明数据库中没有要查询的数据。如果查询的是"学号"(0700120343)myreader["姓名"].ToString();
意思是返回数据库中学号是0700120343的同学的姓名,并将其转换为字符串形式,就可以显示在文本控件中了。
其中myCmd = new SqlCommand("sql语句",myConnection);
中的sql语句在一些条件为动态的时候因为有单引号,很不好写,可以用以下方法:
例如:
myCmd = new SqlCommand("SELECT * FROM xueshengxinxi WHERE [专业]=@zhuanye", myConnection);
//利用sqlcommmand对象的.Parameters
myCmd.Parameters.AddWithValue("@zhuanye", tbzhuanyechaxun.Text.Trim());
//成员完成查询字符串的添加
Parameters.AddWithValue( ,)的第一个参数是sql语句中的动态条件,第二个参数是一个控件以字符串形式给这个动态便条件赋值。
DateTime.Now.ToString("北京时间HH时:mm分:ss秒");
下面的例子分别用了加单引号法和Parameters.AddWithValue的方法, myreader = myCmd.ExecuteReader()方法和 myCmd.ExecuteNonQuery();
方法,另外每生成一个myreader对象,使用完就要关闭myreader.Close();
,数据库连接也要关闭。
myCmd = new SqlCommand("SELECT * FROM xueshengxinxi WHERE 学号=" + "'" + tbxuhao.Text.Trim()+ "'", myConnection);
myreader = myCmd.ExecuteReader();
if (myreader.Read())
{
MessageBox.Show("数据库已有该学生的记录");
myreader.Close();
}
else
{
myreader.Close();
myCmd = new SqlCommand("INSERT INTO xueshengxinxi VALUES(@xh,@xm,@xx,@xy,@zy,NULL)", myConnection);
myCmd.Parameters.AddWithValue("@xh", tbxuhao.Text.Trim());
myCmd.Parameters.AddWithValue("@xm", tbxingming.Text.Trim());
myCmd.Parameters.AddWithValue("@xx", tbxuexiao.Text.Trim());
myCmd.Parameters.AddWithValue("@xy", tbxueyuan.Text.Trim());
myCmd.Parameters.AddWithValue("@zy", tbzhuanye.Text.Trim());
myCmd.ExecuteNonQuery();
}
关于控件errorProvider的用法
比如一个事件被判断为出错,就可以使用errorProvider1.SetError( ,);
方法,第一个参数是输入红圈消息出现在哪个控件的右边,第二个参数是输入消息信息的字符串。errorProvider1.Clear();
方法是适时的清除错误提示。
如:myCmd = new SqlCommand("SELECT * FROM xueshengxinxi WHERE [专业]=@zhuanye",myConnection);
//利用sqlcommmand对象的.Parameters
myCmd.Parameters.AddWithValue("@zhuanye", tbzhuanyechaxun.Text.Trim());
//成员完成查询字符串的添加
myreader = myCmd.ExecuteReader();
this.errorProvider1.Clear();
//注意errorProvider.Clear();
放的位置
if (myreader.Read())
{
tbxuhao.Text = myreader["学号"].ToString();
tbxingming.Text = myreader["姓名"].ToString();
tbxuexiao.Text = myreader["学校"].ToString();
tbxueyuan.Text = myreader["学院"].ToString();
tbzhuanye.Text = myreader["专业"].ToString();
myreader.Close();
}
else
{
myreader.Close();
//使用errorProvider.SetError()方法
this.errorProvider1.SetError(tbzhuanyechaxun, "并无此专业");
}
单击主窗口的一个按钮打开一个副窗口的方法
【C#编程杂谈|C#数据库编程基础之sql语句操作数据库数据】先添加一个窗口,在VS里面"项目"-"添加新项"-"WinForm"-"Windows 窗体" 添加后可以设计此窗体了,然后在主窗口的按钮事件里创建一个该窗口的实例,再用模态(ShowDialog())或非模态(Show())的方式显示出来。例如创建一个Form一个的实例并且显示出来。
Form3 frm3 = new Form3();
frm3.Show();
推荐阅读
- 数据库|SQL行转列方式优化查询性能实践
- mysql|一文深入理解mysql
- 达梦数据库|DM8表空间备份恢复
- 数据技术|一文了解Gauss数据库(开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比)
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- 谈灾难恢复指标(RTO与RPO是什么鬼())
- RPO与RTO
- Application|linux应用编程笔记(5)系统调用文件编程方法实现文件复制