C#链接语句

来源:互联网 发布:黑色沙漠女巫捏脸数据 编辑:程序博客网 时间:2024/04/28 02:50
 摘录:

sql   dataGrid连接数据库
————————————————————————————
using System.Data.SqlClient;

namespace sqlconnect3
{
 /// <summary>
 /// Summary description for Form1.
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.DataGrid dataGrid1;
  private System.Data.SqlClient.SqlCommand s qlSelectCommand1;
  private System.Data.SqlClient.SqlCommand sqlInsertCommand1;
  private System.Data.SqlClient.SqlCommand sqlUpdateCommand1;
  private System.Data.SqlClient.SqlCommand sqlDeleteCommand1;
  private System.Data.SqlClient.SqlConnection sqlConnection1;
  private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
  /// <summary>
  /// Required designer variable.
  /// </summary>
  private System.ComponentModel.Container components = null;

  public Form1()
  {
   //
   // Required for Windows Form Designer support
   //
   InitializeComponent();

   //
   // TODO: Add any constructor code after InitializeComponent call
   //
          SqlConnection con=new SqlConnection(this.sqlConnection1.ConnectionString);

   SqlDataAdapter Dgb=new SqlDataAdapter("Select * From Address",con);
   DataSet ds=new DataSet();
   Dgb.Fill(ds,"Address");

   dataGrid1.DataSource=ds.Tables["Address"].DefaultView;
  }

 

 

oracle    连接
——————————————————————————————
using System;
using System.Data;
using System.Data.OleDb;
class OracleTest
{
  static void Main()
  {
     const string strConn = "PROVIDER=OraOLEDB.Oracle;DATA SOURCE=YourDataSrcName;USER ID=YourUID;PASSWORD=YourPassword;PLSQLRSet=1";
        const string strSQL = "Select * From YourTable";
        try
            {

              OleDbConnection dbConn = new OleDbConnection(strConn);
              DataSet ds = new DataSet("EmployeesSet");
              OleDbDataAdapter da = new OleDbDataAdapter(strSQL,dbConn);
              da.Fill(ds,"Buyer");
              Console.WriteLine(ds.GetXml());
          }
             catch(OleDbException e)
                {
                  Console.WriteLine("Exception Occured :{0}",e.Errors[0].Message);
                }

              }
           }

 

1:SqlServer连本地数据库
SqlConnection myConnection = new SqlConnection("server=(local)//NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Titles", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Titles");
MyRepeater.DataSource = ds.Tables["Titles"].DefaultView;
MyRepeater.DataBind();
2:SqlServer连服务器绑定DataGrid连接
SqlConnection myConnection;
myConnection = new SqlConnection (" user id=;password=;initial catalog=MMAS;data source=MMASS;Connect Timeout=30");     
myConnection.Open ();
string strSel="select  *  from bas_item  ";
SqlDataAdapter myAdapter= new SqlDataAdapter (strSel,myConnection);
DataSet ds=new DataSet ();
myAdapter.Fill (ds,"bas_item");
DataGrid1.DataSource =ds.Tables ["bas_item"].DefaultView;
DataGrid1.DataBind ();
3:Access连接
string MyConnString="provider=Microsoft.Jet.OLEDB.4.0;Data Source=d://demo//db1.mdb";//   "+Server.MapPath("db1.mdb")+"";
MyConn= new OleDbConnection(MyConnString);
MyConn.Open();
string strSel = "select * from u";
DataSet ds = new DataSet();
OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"u");
DataGrid2.DataSource = ds.Tables ["u"].DefaultView
DataGrid2.DataBind();


目前在c#里两个连接类:SqlConnection与OleDbConnection.
两个类的例程分别如下:(from msdn)
1.OleDbConnection:
public void InsertRow(string myConnectionString)
{
   // If the connection string is null, use a default.
   if(myConnectionString == "")
   {
      myConnectionString = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;" +
      "Integrated Security=SSPI;";
   }
   OleDbConnection myConnection = new OleDbConnection(myConnectionString);
   string myInsertQuery = "INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";
   OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
   myCommand.Connection = myConnection;
   myConnection.Open();
   myCommand.ExecuteNonQuery();
   myCommand.Connection.Close();
}
2.SqlConnection:
public void InsertRow(string myConnectionString)
 {
    // If the connection string is null, use a default.
    if(myConnectionString == "")
    {
       myConnectionString = "Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;";
    }
    SqlConnection myConnection = new SqlConnection(myConnectionString);
    string myInsertQuery = "INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";
    SqlCommand myCommand = new SqlCommand(myInsertQuery);
    myCommand.Connection = myConnection;
    myConnection.Open();
    myCommand.ExecuteNonQuery();
    myCommand.Connection.Close();
 }
注:
SqlConnection针对于Sql server 7.0及以后版本。
OleDbConnection用于其他数据库。
至于myConnectinString里的provider参数,针对不同的数据源有:
(1)driver da microsoft para arquivos textto(*.txt,*.csv)
(2)driver do microsoft access(*.mdb)
(3)driver do microsoft dbase(*.dbf)
(4)driver do microsoft execl(*.xls)
(5)driver do microsoft paradox(*.db)
(6)Microsoft Access Driver(*.mdb)
(7)Microsoft Access -treiber(*.mdb)
(8)Microsoft Excel driver(*.xls)


一、概述
       SqlClient是一个数据提供程序,其地位与OracleClient、Odbc、OleDb相当。可以协助应用程序快速访问数据库。
       简单地说,SqlClient的应用就是:利用SqlConnection连接数据库,数据源由SqlCommand确定;利用SqlDataAdapter来桥接DataSet与数据源。如果想自动同步DataSet与数据库,SqlCommandBuild就有用了。如果你只想读而不想更改数据,那么用SqlDataReader吧。当然了,事务是必不可少的,SqlTransaction就是用来做这事的。
       出错啦——SQL Server返回错误时,会引发SqlException异常,同时创建SqlError与SqlErrorCollection。
       SqlParameter及SqlParameterCollection是什么意思?
       如何保证数据库访问安全级别——SqlClientPermission与SqlClientPermissionAttribute。
       有两种访问数据库的方式:
1、仅使用SqlCommand与SqlConnection访问数据库。在这种情况下,SqlCommand的内容通常为跟更新数据库有关的SQL。例:
public void insertRow()
{
       string myConnectionString = “Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;";
       SqlConnection myConnection = new SqlConnection(myConnectionString);
       String myInsertQuery = “insert into Customers (customerID,companyName) values ('NWIND', 'Northwind Traders')”;
       SqlCommand myCommand = new SqlCommand(myInsertQuery);
       MyCommand.Connection = myConnection;
       MyCommand.Open();
       MyCommand.ExecuteNonQuery();
       MyCommand.Collection.Close();
}    
2、使用SqlCommand与SqlConnection、SqlDataAdapter、DataSet访问数据库。在这种情况下,SqlCommand的内容通常为查询。例:
public DataSet SelectSqlRows(DataSet dataSet,string connection,string query)
{
       SqlConnection conn = new SqlConnection(connection);
       SqlDataAdapter adapter = new SqlDataAdapter();
       Adapter.SelectCommand = new SqlCommand(query,conn);
       Adapter.Fill(dataSet);
       Return dataSet;
}
二、SqlConnection
       SqlConnection表示与数据源的一个唯一的会话。必须使用close或dispose关闭。如果执行SqlCommand生成SqlException时,严重度小于等于19时,不会关闭连接。大于19时会关闭连接。
三、SqlCommand
       表示要对数据库执行的一个Sql或存储过程。
       有四种方式:
       ExecuteReader:主要用于Select等查询语句。例:
       cmd.CommandText = “select a,b from k”;
       SqlDataReader myReader = cmd.ExecuteReader();

       Try

       {

              while (myReader.Read())

              {

                     Console.WriteLine(myReader.GetInt32(0)+”              “+myReader.GetInt32(1));

              }

       }

       catch

       {

              myReader.Close();

//关闭连接

       }

 

       ExecuteNonQuery:主要用于数据库操作语句。
       ExecuteScalar:主要用于聚合查询语句,或返回一个值的查询,或结果集中第一行的第一列或空引用(如果结果集为空)。例:

       Cmd.CommandText = “select count(*) from orders”;

       Int32 I = (Int32)cmd.ExecuteScalar();
       ExecuteXMLReader:将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。
四、SqlDataReader
       上面已举过例了。需要说明的是:在读数之前,SqlDataReader默认位置在所有记录前。需调用Read()来访问数据。
       Read()的作用是行进到下一条记录,是Bool型的,如有记录返true,否则返false。
四、SqlDataAdapter
       用得较多了。
五、事务
       DataSet中的事务只用于DataSet,真正的事务控制在这里进行。
       一般的过程是这样的:
       //建立并打开连接
SqlConnection conn = new SqlConnection(…………);
       SqlConnection.Open();
       //创建myCommand;
       SqlCommand myCommand = SqlConnection.CreateCommand();
       //创建事务
       SqlTransaction trans = SqlConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
       //将事务、连接与Command对象相关
       MyCommand.Connection = myConnection; //这句是多余的,上面已有同样功能
       MyCommand.Transaction = trans;

 

       Try
       {
              myCommand.CommandText = “   “;
              myCommand.ExcuteNonQuery();
              trans.Commit();   //提交事务
       }
       catch(SqlException s)
       {
              trans.Rollback(“SampleTransaction”); //回滚事务
       }
       从这个程序可以很清楚地表明:事务是由SqlConnection创建,并必须关联到SqlCommand,最后由事务自身来进行提交或回滚操作的。
       同时可以看到:一个连接可以打开多个不同名的事务。
       还有:IsolationLevel事务隔离级别(枚举)有如下几种:
       Chaos:无法改写隔离级别更高的事务中挂起的操作。
       ReadCommitted:在正在读取数据时保持共享锁,避免脏读。
       ReadUncommitted:可以脏读。
       RepeatableRead:可重复读取。
       Serializable:最高级别。
       分别与SQL Server中四种隔离级别对应。