這裏的類名叫ClsDbOper:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
///
/// ClsDbOper 的摘要說明
///
public class ClsDbOper
{
public static string strSqlConn = System.Configuration.ConfigurationSettings.AppSettings["DbConnString"];// "Data Source=.;Initial Catalog=Test;User Id=sa;Password=123;";//
///
/// 執行sql語句
///
/// 需要執行的SQL
/// 對於 UPDATE、INSERT 和 DELETE 語句,返回值爲該命令所影響的行數。
/// 對於 CREATE TABLE 和 DROP TABLE 語句,返回值爲 0。
/// 對於所有其他類型的語句,返回值爲 -1。
public static int ExcSQL(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
try
{
Conn.Open();
SqlCommand sqlCmd = new SqlCommand(sql, Conn);
int val = sqlCmd.ExecuteNonQuery();
return val;
}
finally
{
Conn.Close();
Conn.Dispose();
}
}
///
/// 按sql語句返回DataReader
///
///
///
public static SqlDataReader GetDataReader(string sql)
{
try
{
SqlConnection Conn = new SqlConnection(strSqlConn);
SqlCommand SqlCmd = new SqlCommand(sql, Conn);
Conn.Open();
SqlDataReader sqlDr = SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
return sqlDr;
}
catch (Exception ex)
{
throw (ex);
}
}
public static DataView GetGrid(string Sql, string Tb)
{
DataSet DS;
SqlConnection Conn = new SqlConnection(strSqlConn);
SqlDataAdapter myCommand = new SqlDataAdapter(Sql, Conn);
DS = new DataSet();
myCommand.Fill(DS, Tb);
DataView result = DS.Tables[Tb].DefaultView;
return result;
}
public static object GetSqlDataSource(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
try
{
Conn.Open();
SqlCommand SqlCmd = new SqlCommand(sql, Conn);
object val = SqlCmd.ExecuteScalar();
return val;
}
finally
{
Conn.Close();
Conn.Dispose();
}
}
///
/// 根據SQL獲得單一的值
///
///
///
public static string GetSingleValue(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
try
{
SqlCommand sqlCmd = new SqlCommand(sql, Conn);
Conn.Open();
object val = sqlCmd.ExecuteScalar();
string GetValue = Convert.ToString(val);
return GetValue;
}
finally
{
Conn.Close();
Conn.Dispose();
}
}
///
/// 根據SQL獲得單一的值
///
///
///
public static object GetSingleObject(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
try
{
SqlCommand sqlCmd = new SqlCommand(sql, Conn);
Conn.Open();
object val = sqlCmd.ExecuteScalar();
return val;
}
finally
{
Conn.Close();
Conn.Dispose();
}
}
///
/// 按sql語句返回DataSet
///
///
/// 返回DataSet,可以填充DataView等
public static DataSet GetDataSet(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
try
{
DataSet ds = new DataSet();
Conn.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter(sql, Conn);
sqlDa.Fill(ds);
return ds;
}
finally
{
Conn.Close();
Conn.Dispose();
}
}
///
/// 按sql語句返回DataTable,如果沒有數據,則第一行是空行
///
///
///
public static DataTable GetDataTable(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
Conn.Open();
DataTable dt = new DataTable();
DataSet ds = new DataSet();
try
{
ds = GetDataSet(sql);
dt = ds.Tables[0];
if (ds.Tables[0].Rows.Count == 0)
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
return dt;
}
finally
{
ds.Dispose();
Conn.Close();
Conn.Dispose();
}
}
///
/// 按sql語句返回DataTable
///
///
///
public static DataTable GetDataTableNoEmpty(string sql)
{
SqlConnection Conn = new SqlConnection(strSqlConn);
Conn.Open();
DataSet ds = new DataSet();
try
{
ds = GetDataSet(sql);
return ds.Tables[0];
}
finally
{
ds.Dispose();
Conn.Close();
Conn.Dispose();
}
}
//1 上帝說,要連接數據庫,於是就有了sqlconnection (數據庫連接,配置連接字符串等,用戶名密碼之類)
//2 上帝說,要執行sql語句。於是就有了sqlcommand, 直接翻譯成sql命令。每個sqlcommand都有commandtext跟parameters 文本跟參數。填寫好這個命令,然後execute去執行。當然,要確保連接是open的才能執行。沒連接啥都幹不了。
//3 上帝認爲要有辦法讀取返回結果,於是便有了datareader.可以一條一條的讀取(read)直到最後一條。
//4 上帝認爲,把執行的結果找個地方存起來是好的。於是就有了dataset。這個東西很完美,基本上能存各種數據跟關係,比datareader方便很多。裏面有一個一個的dataview跟datatable.針對你的查詢結果,當然,datatable又可以從datarow一個一個的循環取得
//5 上帝覺得上述步驟太複雜了 -_-!
//於是便有了SqlDataAdapter (翻譯爲SQL數據適配器,適配器模式) 它來封裝簡化了上述步驟。你只要new出來一個sqldataadapter,給他填上語句,直接fill到dataset就行了。這樣你什麼都有了,只需要兩步!
//6 微軟覺得,可視化的東西是上帝喜歡的(用戶==上帝)
//於是有了一個一個的SqlAdapter控件,DataSet控件,GridView控件....你可以直接拖到你的窗口(WinForm)或者頁面(Asp.Net Web Application等)設置幾個屬性,綁定即可。一行代碼都不用寫。以至於普通網管跟文員都能成爲潛在用戶。(雖然這種方式被“專業程序員”所不齒)
//7建議:
//如果喜歡效率的,用command+datareader自己處理(要小心別弄得更差哦)
//如果喜歡方便的,就大量的使用Adapter+DataSet吧。畢竟綁定太節約時間了
//如果就想顯示個數據而已...拖吧...反正你就是想給隔壁辦公室顯示個報表。幹嘛想那麼多。
再添加一個App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="DbConnString" value="Data Source=.;Initial Catalog=DA;User Id=sa;Password=123321;" />
</appSettings>
<connectionStrings><add name="DAEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=WINZQ-20160302U;initial catalog=DA;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>