c#操作sql和access

一 操作SQL

 

1,准备

定义全局变量gsqlconn,gsqlcmd,gsqldap,在下面提及的修改、插入等操作需用上。

操作数据库,用到四大类SqlConnection,SqlCommand,SqlDataAdapter,DataSet

using System.Data.SqlClient;

//定义全局变量gsqlconn,gsqlcmd,gsqldap

SqlConnection gsqlconn = new SqlConnection("data source=(local);database=pubs;user id=sa;pwd=");

SqlCommand gsqlcmd = new SqlCommand();

SqlDataAdapter gsqldap = new SqlDataAdapter();

// sqlconn.Open();//sqlconn.Close();若只是读取数据库,无需Open()

 

2,读取

DataSet dset = new DataSet();//局部的dset,保持 Fill为全新的数据

gsqlcmd.Connection = gsqlconn;

gsqlcmd.CommandText = "select au_lname from authors";//1

gsqldap.SelectCommand = gsqlcmd;

gsqldap.Fill(dset, "tb1");           

gsqlcmd.CommandText = "select * from authors";//2

gsqldap.SelectCommand = gsqlcmd;

gsqldap.Fill(dset, "tb2");

dataGridView3.DataSource = dset.Tables["tb1"];

dataGridView4.DataSource = dset.Tables["tb2"];

 

3,修改

gsqlconn.Open();

gsqlcmd.Connection = gsqlconn;

gsqlcmd.CommandText="update discounts set discounttype='ET' where discounttype='sb'";

gsqlcmd.ExecuteNonQuery();

gsqlconn.Close();

 

4,插入

SqlCommand sqlcmd = new SqlCommand();//定义为局部变量->解决第二次插入出错

gsqlconn.Open();

sqlcmd.Connection = gsqlconn;

sqlcmd.CommandText = "insert into discounts (discounttype,discount) values (@discounttype,@discount)";

sqlcmd.Parameters.Add("@discounttype", SqlDbType.VarChar); sqlcmd.Parameters["@discounttype"].Value = "SB";

sqlcmd.Parameters.Add("@discount", SqlDbType.Decimal); sqlcmd.Parameters["@discount"].Value = 5;

sqlcmd.ExecuteNonQuery();

gsqlconn.Close();

 

5,删除

gsqlconn.Open();

gsqlcmd.Connection = gsqlconn;

gsqlcmd.CommandText = "delete from discounts where discounttype='ET'";

gsqlcmd.ExecuteNonQuery();

gsqlconn.Close();

 

6,从dataset中取数据

DataSet dset = new DataSet();//局部的dset,保持 Fill为全新的数据

gsqlcmd.Connection = gsqlconn;

gsqlcmd.CommandText = "select phone,address from authors";

gsqldap.SelectCommand = gsqlcmd;

gsqldap.Fill(dset, "tb3");

dataGridView3.DataSource = dset.Tables["tb3"];

//  string buf_data1 = dset.Tables["tb3"].Rows[0][0].ToString();//0行0

string buf_data1 = dset.Tables["tb3"].Rows[0]["phone"].ToString();//0行"phone"

textBox8.Text = buf_data1;

 

7,从dataGridView中取数据

if (dataGridView3.Rows.Count == 0) return;

string buf_data1;

// buf_data1 = dataGridView3.Rows[0].Cells[0].Value.ToString();//0行0

// buf_data1 = dataGridView3.Rows[0].Cells["phone"].Value.ToString();//0行"phone"

// buf_data1 = dataGridView3.CurrentRow.Cells["phone"].Value.ToString();//选择行"phone"

buf_data1 = dataGridView3.CurrentCell.Value.ToString();//当前选择

textBox8.Text = buf_data1;

 

8,创建数据库

//注意输入"C:\xx" -->"C:\\xx" 

string myExecuteQuery = "Create Database AppDta On Primary (name=appDtal,filename='c:\\appdta1.mdf',size=10MB,Maxsize=100MB,filegrowth=10MB),(Name=appdte2,filename='c:\\appdta1.ndf',size=10MB,FileGrowth=10MB)";

SqlConnection mySqlConnection = new SqlConnection("server=(local);user id=sa;password=;Trusted_Connection=yes;");

SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection);

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

mySqlConnection.Close();

 

9,删除数据库

string myExecuteQuery = "Drop Database AppDta"; //删除AppDta

SqlConnection mySqlConnection = new SqlConnection("server=(local);user id=sa;password=;Trusted_Connection=yes;");

SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection);

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

mySqlConnection.Close();

 

10,创建数据表

string myExecuteQuery = "Create Table AppDta.dbo.Customer" +

        "( CustId  int      not Null check(CustId>0)," +

         " Name    char(30) not Null check(Name<>'')," +

          "status  char(1)  not Null Default '')" +

          " Use AppDta";

SqlConnection mySqlConnection = new SqlConnection("server=(local);user id=sa;password=;Trusted_Connection=yes;");

SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection);

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

mySqlConnection.Close();

 

11,删除数据表

string myExecuteQuery = "Drop table AppDta.dbo.Customer";

SqlConnection mySqlConnection = new SqlConnection("server=(local);user id=sa;password=;Trusted_Connection=yes;");

SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection);

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

mySqlConnection.Close();

 

12,增加列

string myExecuteQuery = "Alter Table AppDta.dbo.Customer Add list1 int Default 0";

SqlConnection mySqlConnection = new SqlConnection("server=(local);user id=sa;password=;Trusted_Connection=yes;");

SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection);

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

mySqlConnection.Close();

 

//*****************************************************************

二 操作Access

与操作SQL用法大同小异

 操作日期时间,要加"#",例 "#2008-1-1 0:00:01#"

1,读取记录

using System.Data.OleDb;//add

using System.Data;//add

 

public bool RDAccess(string Obj, out byte COM, out byte ADDR, out byte CH)//读取Access

{

    String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Model.mdb";    OleDbConnection connection = new OleDbConnection(connectionString); //建立连接

 

    OleDbCommand cmd = new OleDbCommand();//使用OleDbCommand类来执行Sql语句:

    cmd.Connection = connection;//

 

    cmd.CommandText = "select COM,ADDR,CH from tb1 where Model='" + Obj+"'";//需加单引号

    DataSet dset = new DataSet();

    OleDbDataAdapter ODbda = new OleDbDataAdapter();

    ODbda.SelectCommand = cmd;

    ODbda.Fill(dset, "tb1");

    COM = byte.Parse(dset.Tables["tb1"].Rows[0]["COM"].ToString());//

    ADDR = byte.Parse(dset.Tables["tb1"].Rows[0]["ADDR"].ToString());//

    CH = byte.Parse(dset.Tables["tb1"].Rows[0]["CH"].ToString());//

    return true;

}

 

2,增加记录

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=a.mdb";//

OleDbConnection connection = new OleDbConnection(connectionString); //建立连接

 

OleDbCommand cmd = new OleDbCommand();//使用OleDbCommand类来执行Sql语句:

cmd.Connection = connection;//

connection.Open();

//方式1

cmd.CommandText = "insert into tb1 (name,num) values (@name,@num)";

cmd.Parameters.Add("@name", SqlDbType.VarChar); cmd.Parameters["@name"].Value = "SB";

cmd.Parameters.Add("@num", SqlDbType.Decimal); cmd.Parameters["@num"].Value = 3;

//方式2

cmd.CommandText = "insert into tb1 (name,num) values (buf1,buf2)";//对于"password"等Access保留字要加[]

 

cmd.ExecuteNonQuery();

connection.Close();

 

 

3,修改,删除等操作与增加记录的操作方法基本一样,区别只在查询语句上。

using System; using System.Data; using System.Configuration; using System.Data.OleDb; namespace xxxxx { /// <summary> /// Access数据库访问类 /// </summary> public class DataAccess { private static OleDbConnection conn = new OleDbConnection(); private static OleDbCommand comm = new OleDbCommand(); private static string asscessPath = @".\PoliScan.mdb"; /// <summary> /// 设置Access数据库路径 /// </summary> /// <param name="path">完整的路径字符串</param> public static void SetAccessPath(string path) { asscessPath = path; } /// <summary> /// 打开数据库 /// </summary> /// <returns>成功返回 true;失败返回 false;异常时抛出异常</returns> public static bool OpenConnection() { bool retval = false; if (conn.State != ConnectionState.Open) { conn.ConnectionString = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + asscessPath; comm.Connection = conn; try { conn.Open(); if (conn.State == ConnectionState.Open) { retval = true; } } catch (Exception e) { throw new Exception(e.Message); } ............................ ............................ using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; using System.Data.SqlClient; /// <summary> /// DataBase 的摘要说明 /// </summary> public class DataBase : IDisposable { public DataBase() { // // TODO: 在此处添加构造函数逻辑 // } private SqlConnection con; //创建连接对象 #region 打开数据库连接 /// <summary> /// 打开数据库连接. /// </summary> private void Open() { // 打开数据库连接 if (con == null) { con = new SqlConnection("Data Source = . ;Database = CET ;Integrated Security = SSPI "); } if (con.State == System.Data.ConnectionState.Closed) con.Open(); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值