CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#的数据库问题???

楼主jacksonjian(不说)2003-12-02 08:25:48 在 .NET技术 / C# 提问

用C#写一个类模块,在里面实现对数据库的操作,包括添加\删除\修改数据.还包括,返回多少条记录和记录集.我没做过C#,请大家给点建议吧! 问题点数:88、回复次数:8Top

1 楼saucer(思归)回复于 2003-12-02 08:30:32 得分 1

if   you   are   using   SQL   Server,   look   into   Microsoft   Data   Access   Application   Block  
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp  
  Top

2 楼snof(雪狼)回复于 2003-12-02 08:41:53 得分 5

首先取得数据,放到DataGrid里  
   
  System.Data.SqlClient.SqlConnection   conn   =   new   System.Data.SqlClient.SqlConnection("server=localhost;database=northWind;uid=sa;password=110");  
  conn.Open();  
  System.Data.SqlClient.SqlDataAdapter   da   =   new   System.Data.SqlClient.SqlDataAdapter("select   *   from   student",conn);  
  dt   =   new   System.Data.DataSet();  
  da.Fill(dt,"student");  
  记录总数:  
  dt.tables[0].rows.count;  
  然后绑定数据集和DataGrid  
  DataGrid.SetDataBinding(dt,"student");  
  如果需要,可以绑定TextBox来作录入,而用DataGrid显示  
  this.textBox16.DataBindings.Add("Text",dt,"student.stuno");  
  然后进行数据的操作如:  
  增加:  
  this.BindingContext[dt,"student"].AddNew();  
  删除:  
  this.BindingContext[dt,"student"].RemoveAt(this.BindingContext[dt,"student"].Position);  
  最后把结果写回数据库:  
   
   
  //   sqlInsertCommand1  
  //    
  this.sqlInsertCommand1.CommandText   =   "INSERT   INTO   student(stuno,   name)   VALUES   (@stuno,   @name)";    
  this.sqlInsertCommand1.Connection   =   this.conn;  
  this.sqlInsertCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@stuno",   System.Data.SqlDbType.VarChar,   4,   "stuno"));  
  this.sqlInsertCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@name",   System.Data.SqlDbType.VarChar,   50,   "name"));  
  //    
  //   sqlUpdateCommand1  
  //    
  this.sqlUpdateCommand1.CommandText   =   "UPDATE   student   SET   stuno   =   @stuno,   name   =   @name   WHERE   (stuno   =   @Original_stuno)";  
  this.sqlUpdateCommand1.Connection   =   this.conn;  
  this.sqlUpdateCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@stuno",   System.Data.SqlDbType.VarChar,   4,   "stuno"));  
  this.sqlUpdateCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@name",   System.Data.SqlDbType.VarChar,   50,   "name"));  
  this.sqlUpdateCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@Original_stuno",   System.Data.SqlDbType.VarChar,   4,   System.Data.ParameterDirection.Input,   false,   ((System.Byte)(0)),   ((System.Byte)(0)),   "stuno",   System.Data.DataRowVersion.Original,   null));  
     
  //   sqlDeleteCommand1  
  //    
  this.sqlDeleteCommand1.CommandText   =   "DELETE   FROM   student   WHERE   (stuno   =   @Original_stuno)";  
  this.sqlDeleteCommand1.Connection   =   this.conn;  
  this.sqlDeleteCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@Original_stuno",   System.Data.SqlDbType.VarChar,   4,   System.Data.ParameterDirection.Input,   false,   ((System.Byte)(0)),   ((System.Byte)(0)),   "stuno",   System.Data.DataRowVersion.Original,   null));  
   
  this.sqlDa.DeleteCommand   =   this.sqlDeleteCommand1;  
  this.sqlDa.InsertCommand   =   this.sqlInsertCommand1;  
  this.sqlDa.UpdateCommand   =   this.sqlUpdateCommand1;  
  try  
  {  
  sqlDa.Update(dt.GetChanges,"student");    
  return   true;  
  }  
  catch(System.Data.SqlClient.SqlException   ex)  
  {  
   
  return   false;  
  }    
  finally  
  {  
  conn.Close();  
  }  
   
   
  //-------------------------------------------  
  //批量增加10条记录,然后一次写回到数据库  
  //-------------------------------------  
   
  conn   =   new   System.Data.SqlClient.SqlConnection("server=localhost;database=hos;uid=sa;pwd=");  
  conn.Open();  
  da   =   new   System.Data.SqlClient.SqlDataAdapter("select   *   from   test",conn);  
  dt1   =   new   System.Data.DataSet();  
  da.Fill(dt1,"test");  
  DataRow   myRow;  
  for(int   i=0;i<10;i++)  
  {  
  myRow   =   dt1.Tables[0].NewRow();  
  //   Then   add   the   new   row   to   the   collection.  
  myRow["ID"]   =   i.ToString();  
  dt1.Tables[0].Rows.Add(myRow);  
  }  
   
  System.Data.SqlClient.SqlDataAdapter   daa   =   new   System.Data.SqlClient.SqlDataAdapter("Select   ID   From   test",   conn);  
  System.Data.SqlClient.SqlCommandBuilder   MyCB   =   new   System.Data.SqlClient.SqlCommandBuilder(daa);  
  daa.MissingSchemaAction   =   MissingSchemaAction.AddWithKey;  
  daa.Update(dt1,   "test");Top

3 楼eyestrong(有时爱情图有虚名)回复于 2003-12-02 08:48:39 得分 1

您使用的是VS.net么?  
  在VS.net中有许多这方面的例子。可以先安装quickstart并对其进行参考。  
  安装目录:  
  [VS.net的安装目录]\SDK\v1.1\starthere.htm  
  安装完成后,在ie的地址栏中输入:http://localhost/quickstart/howto/  
  便可进入quickstart.  
  数据和   ADO.NET一项下有许多基本数据库操作的例子。  
  Top

4 楼jacksonjian(不说)回复于 2003-12-02 08:58:41 得分 0

我用的是类。C#中的类。Top

5 楼Wuzhou98(还在学习...)回复于 2003-12-02 09:00:27 得分 1

markTop

6 楼jacksonjian(不说)回复于 2003-12-02 09:05:44 得分 0

我是想把它们编到一个类中,当使用类的时候在外部修改就可以了。也就是说这个类适合一切的数据的操作。Top

7 楼realMAX(♂ 困惑的浪漫 ♀)回复于 2003-12-02 09:28:46 得分 1

upTop

8 楼NicholasZhr(只在乎一时的灵感)回复于 2003-12-02 09:52:17 得分 79

楼主请看  
  看看下面的代码可以吗!?你需要的功能全部在里面了。  
  ************************************************************************  
  using   System;  
  using   System.Data;  
  using   System.Data.OleDb;  
   
  namespace   pdvi  
  {  
  public   class   Pdvi  
  {  
  OleDbConnection   OleDbConn   =   new   OleDbConnection();  
  OleDbDataAdapter   OleDbAdap   =   new   OleDbDataAdapter();  
  string   connstr   =   null;  
  string   connuid   =   null;  
  string   connpwd   =   null;  
  bool   Statu   =   false; //数据源状态标志默认是关闭  
   
  ///   <summary>  
  ///   默认构造函数  
  ///   </summary>  
  public   Pdvi() //构造函数  
  {  
  }  
   
  ///   <summary>  
  ///   重载构造函数  
  ///   </summary>  
  ///   <param   name="ConnStr">连接字符串</param>  
  public   Pdvi(string   ConnStr)  
  {  
  initialize(ConnStr); //调用初始化私有方法  
  }  
   
  ///   <summary>  
  ///   初始化私有方法  
  ///   </summary>  
  ///   <param   name="ConnStr">连接字符串</param>  
  private   void   initialize(string   ConnStr) //初始化私有方法  
  {  
  OpenConnString(ConnStr); //调用数据访问方法  
  }  
   
  ///   <summary>  
  ///   私有方法连接数据源  
  ///   </summary>  
  ///   <param   name="ConnStr">连接字符串</param>  
  private   void   OpenConnString(string   ConnStr) //调用方法打开数据源  
  {  
  try  
  {  
  this.OleDbConn.ConnectionString   =   ConnStr.ToString();  
  this.OleDbConn.Open();  
  }  
  catch(Exception   e)  
  {  
  throw   e;  
  }  
  finally  
  {  
  if   (this.OleDbConn.State   ==   System.Data.ConnectionState.Open)  
  {  
  this.Statu   =   true; //数据源被打开标志  
  }  
  else  
  {  
  this.Statu   =   false;  
  }  
  }  
  }  
   
  ///   <summary>  
  ///   公共方法连接数据源  
  ///   </summary>  
  public   void   OpenConnString() //调用方法打开数据源  
  {  
  try  
  {  
  this.OleDbConn.ConnectionString   =   this.connstr.ToString();  
  this.OleDbConn.Open();  
  }  
  catch(Exception   e)  
  {  
  throw   e;  
  }  
  finally  
  {  
  if   (this.OleDbConn.State   ==   System.Data.ConnectionState.Open)  
  {  
  this.Statu   =   true; //数据源被打开标志  
  }  
  else  
  {  
  this.Statu   =   false;  
  }  
  }  
  }  
   
  ///   <summary>  
  ///   设置连接字符串  
  ///   </summary>  
  ///   <param   name="connstr">连接字符串</param>  
  public   void   SetConnStr(string   connstr) //设置连接数据源的字符串  
  {  
  this.connstr   =   connstr;  
  }  
   
  ///   <summary>  
  ///   设置连接用户名  
  ///   </summary>  
  ///   <param   name="connuid">连接用户名</param>  
  public   void   SetConnUid(string   connuid) //设置连接数据源的用户名  
  {  
  this.connuid   =   connuid;  
  }  
   
  ///   <summary>  
  ///   设置连接密码  
  ///   </summary>  
  ///   <param   name="connpwd">连接密码</param>  
  public   void   SetConnPwd(string   connpwd) //设置连接数据源的通行码  
  {  
  this.connpwd   =   connpwd;  
  }  
   
  ///   <summary>  
  ///   获得连接字符串  
  ///   </summary>  
  ///   <returns>返回连接字符串</returns>  
  public   string   GetConnStr() //获取连接数据源的字符串  
  {  
  return   this.connstr;  
  }  
   
  ///   <summary>  
  ///   获得连接用户名  
  ///   </summary>  
  ///   <returns>返回用户名字符串</returns>  
  public   string   GetConnUid() //获取连接数据源的用户名  
  {  
  return   this.connuid;  
  }  
   
  ///   <summary>  
  ///   获得连接密码  
  ///   </summary>  
  ///   <returns>返回密码字符串</returns>  
  public   string   GetConnPwd() //获取连接数据源的通行证  
  {  
  return   this.connpwd;  
  }  
   
  ///   <summary>  
  ///   执行DataReader命令,返回影响数据表的结果  
  ///   </summary>  
  ///   <param   name="sSQL">SQL字符串</param>  
  ///   <returns>返回影响数据表的结果</returns>  
  public   OleDbDataReader   GetDataReader(string   sSQL)  
  {  
  OleDbCommand   cmd   =   new   OleDbCommand(sSQL,this.OleDbConn);  
   
  try  
  {  
  if   (this.Statu   ==   true)  
  {  
  return   cmd.ExecuteReader();  
  }  
  else  
  {  
  return   null;  
  }  
  }  
  catch   (Exception   e)  
  {  
  throw   e;  
  }  
  finally  
  {  
  cmd.Dispose();  
  this.OleDbConn.Close();  
  this.OleDbConn.Dispose();  
  }  
  }  
   
  ///   <summary>  
  ///   执行DataSet方法,返回结果集  
  ///   </summary>  
  ///   <param   name="sSQL">SQL字符串</param>  
  ///   <returns>返回影响数据表的结果</returns>  
  public   DataSet   GetDataSet(string   sSQL)  
  {  
  this.OleDbAdap   =   new   OleDbDataAdapter(sSQL,this.OleDbConn);  
  DataSet   Ds   =   new   DataSet();  
   
  try  
  {  
  if   (this.Statu   ==   true)  
  {  
  this.OleDbAdap.Fill(Ds);  
  return   Ds;  
  }  
  else  
  {  
  return   null;  
  }  
  }  
  catch   (Exception   e)  
  {  
  throw   e;  
  }  
  finally  
  {  
  this.OleDbConn.Close();  
  this.OleDbAdap.Dispose();  
  }  
  }  
   
  }  
  }Top

相关问题

  • c++和数据库
  • C++ Build 数据库问题
  • C#数据库的问题
  • C/S数据库编程?????
  • C和数据库问题?
  • c/s模式的数据库。
  • C#数据库的问题
  • C++连Oracle数据库
  • C#连接数据库
  • c#数据库编程

关键词

  • c#
  • 连接
  • 数据
  • 函数
  • 密码
  • 用户
  • oledbconn
  • 字符串
  • 数据源
  • connstr

得分解答快速导航

  • 帖主:jacksonjian
  • saucer
  • snof
  • eyestrong
  • Wuzhou98
  • realMAX
  • NicholasZhr

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo