C#数据库操作的示例详解

  //创建数据库操作类,DBOpera,方便其他功能在进行数据库操作时,减少重复工作。

  //数据库链接字符串,使用private防止为外部访问修改

  private static string connstring = @"Data source = RANDOMSQLEXPRESS; Initial Catalog = DB1;User ID=sa; pwd = 123456";

  //数据库链接对象

  public static SqlConnection conn = new SqlConnection(connstring);

  //定义执行sql查询语句方法

  public int ExecSQL(string sql)

  {

  //执行查询语句后并不需要返回所有的查询结果,而仅需要返回一个值,

  //例如查询表中的记录行数

  //实例化sqlcommand类。

  SqlCommand cmd = new SqlCommand(sql, conn);

  if (conn.State == ConnectionState.Closed)//如果当前数据库链接处于关闭状态

  conn.Open();

  int num = Convert.ToInt32(cmd.ExecuteScalar());//执行查询

  conn.Close();

  return num;

  }

  public int ExecSQLResult(string sql)

  {

  /*执行非查询 SQL 语句时并不需要返回表中的数据

  增加、修改、删除的操作

  该方法的返回值是一个整数,表示 SqlCommand 类在执行 SQL 语句后,

  对表中数据影响的行数。返回值为-1时,代表 SQL 语句执行失败,返回值为 0 时,代表 SQL 语句对当前数据表中的数据没有影响。*/

  //实例化sqlcommand对象

  SqlCommand cmd = new SqlCommand(sql, conn);

  if (conn.State == ConnectionState.Closed)

  conn.Open();

  int result = cmd.ExecuteNonQuery();

  conn.Close();

  return result;

  }

  public DataSet GetDataSet(string sql)

  {

  //将数据表中的数据查询出来并添加到 DataSet 中

  //每个 DataSet 都是由若干个数据表构成的,DataTable 即数据表,

  //每个 DataTable 也都是由行和列构成的,

  //行使用 DataRow 类表示、列使用 DataColumn 类表示。

  SqlDataAdapter sqlda = new SqlDataAdapter(sql, conn);

  DataSet ds = new DataSet();

  sqlda.Fill(ds); //填充数据集

  return ds; // 返回数据集

  }

  public SqlDataReader GetDataReader(string sql)

  {

  //读取表中的查询结果,以只读方式读取的(即不能修改 DataReader 中存放的数据)

  //当查询结果仅为一条时,可以使用 if 语句查询 DataReader 对象中的数据,

  //如果返回值是多条数据,需要通过 while 语句遍历 DataReader 对象中的数据。

  SqlCommand cmd = new SqlCommand(sql, conn);

  if (conn.State == ConnectionState.Closed)

  conn.Open();

  SqlDataReader sqlDR = cmd.ExecuteReader();

  return sqlDR;

  }

  }

  //外部调用DBOpera类,将模拟产生的考试成绩存储到数据库中

  //将考试成绩保存到数据库中

  //调用DataOperaor类中ExecSQLResult方法

  string sql = "insert into MScore(Level,Math,Chinese,English," +

  "Chemical,Physics,Biology,TotalScore,AvgScore) values" +

  "('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')";

  //填充SQL语句

  sql = string.Format(sql, ScoreLevel, tbx01.Text, tbx02.Text, tbx03.Text, tbx04.Text, tbx05.Text,

  tbx06.Text, SumScore.ToString(), AvgScore.ToString());

  int result = DbOpera.ExecSQLResult(sql);

  if (result != -1)

  {

  MessageBox.Show("数据存储成功");

  }

  else

  {

  MessageBox.Show("数据存储失败!");

  }