C#数据库编程基础之sql语句操作数据库数据

来源:互联网 发布:java生成随机数组 编辑:程序博客网 时间:2024/05/17 04:14

        连接sql server数据库用到的命名空间是using System.Data.SqlClient;

  数据库连接代码:可以在大类之下声明 public SqlConnection myConnection;  //sql连接对象

                                    public  SqlCommand myCmd;  //用于存储sql语句的对象

        另一种读取对象是dataset     public 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, "并无此专业");
       }

    单击主窗口的一个按钮打开一个副窗口的方法

    先添加一个窗口,在VS里面"项目"-"添加新项"-"WinForm"-"Windows 窗体" 添加后可以设计此窗体了,然后在主窗口的按钮事件里创建一个该窗口的实例,再用模态(ShowDialog())或非模态(Show())的方式显示出来。例如创建一个Form一个的实例并且显示出来。
                Form3 frm3 = new Form3();
                    frm3.Show();

原创粉丝点击