一.数据库连接
将连接的数据库信息存在下面的文件中,方便统一管理。
Web.config//还不懂这个的。最好好好学学,本人觉得很有用,.NET么当然要用.NET的东西了。
1<configuration>
2<configsections>
3<sectiongroup name="system.web">
4<section name="database" type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"></section>
5</sectiongroup>
6</configsections>
7<system.web>
8<!-- ダイナミック デバッグ コンパイル
9ASPX デバッグを有効にするには、compilation debug="true" に設定します。この値を False に設定すると、
10
11このアプリケーションの実行時のパフォーマンスが向上します。
12
13デバッグ シンボル (.pdb 情報) をコンパイルされたページに挿入するには、
14
15compilation debug="true" に設定します。この設定によって、実行速度の遅い大きなファイルが作成されます。
16
17デバッグ時にのみ、この値を true に設定して、
18
19それ以外のときは、常に false に設定してください。詳細については、
20
21ASP .NET ファイルのデバッグ ドキュメントを参照してください。
22
23\-->
24<compilation debug="true" defaultlanguage="c#">
25<assemblies>
26</assemblies>
27</compilation>
28<!-- カスタム エラー メッセージの設定
29
30カスタム エラー メッセージを有効にするには customErrors mode="On"または "RemoteOnly" にします。無効にする場合は "Off" に設定します。
31
32処理する各エラーに <error> タグを追加してください。
33defaultRedirect="err.htm"
34
35"オン" 常にカスタム (理解しやすい) メッセージを表示します。
36
37"オフ" 常に詳細な ASP.NET エラー情報を表示します。
38
39"リモートのみ" ローカル Web サーバーで実行していないユーザーに対してのみ、
40
41常にカスタム (理解しやすい) メッセージを表示します。この設定は、セキュリティを考慮して、アプリケーションの詳細がリモートのクライアントに
42表示されないようにする推奨された設定です。
43
44\-->
45<customerrors defaultredirect="/main/defaultError.aspx" mode="RemoteOnly">
46<error redirect="/main/Error500.htm" statuscode="404"></error>
47<error redirect="/main/Error500.htm" statuscode="500"></error>
48</customerrors>
49<!-- 認証の設定 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
50このセクションは、アプリケーションの認証ポリシーを設定します。使用できるモードは、"Windows"、
51
52"Forms"、"Passport" および "None" です。
53
54
55"None" 認証が実行されません。
56"Windows" IIS はアプリケーションの設定に従って認証 (基本、ダイジェスト、または統合 Windows)
57を実行します。匿名アクセスは IIS では無効でなければなりません。
58
59"Forms" ユーザーが資格情報を入力するカスタム フォーム (Web ページ) を提供してください。
60
61そして、アプリケーションで認証してください。ユーザーの資格情報のトークンは Cookie に保存されています。
62
63"Passport" 認証は、単一のログオンおよびメンバ サイトのコア プロファイル サービスを提供する
64Microsoft により提供される管理認証サービスを使用して実行されます。
65
66\-->
67<identity impersonate="true"></identity>
68<authentication mode="Windows"></authentication>
69<!-- 権限の設定
70
71このセクションは、アプリケーションの権限のポリシーを設定します。この設定により、ユーザーまたはロールによるアプリケーション リソースへのアクセスを許可したり、
72
73拒否したりできます。ワイルドカード : "*" は全員を、"?" は匿名
74(未認証) ユーザーを表します。
75
76\-->
77<authorization>
78<allow users="*"></allow> <!-- * 全ユーザーへの許可 -->
79<!-- <allow users="[ユーザーのコンマ区切り一覧]"
80roles="[ロールのコンマ区切り一覧]"/>
81<deny users="[ユーザーのコンマ区切り一覧]"
82roles="[ロールのコンマ区切り一覧]"/>
83\-->
84</authorization>
85<!-- アプリケーション レベルのトレース ログの設定
86
87アプリケーション レベルのトレースは、アプリケーション内の全ページのトレース ログ出力を有効にします。
88
89アプリケーション トレース ログを有効にするには、trace enabled="true" に設定します。pageOutput="true" に設定された場合、
90
91トレース情報が各ページの下に表示されます。それ以外の場合は、
92
93Web アプリケーション ルートから "trace.axd" ページを参照してアプリケーション トレースを
94
95表示できます。
96
97\-->
98<trace enabled="false" localonly="true" pageoutput="false" requestlimit="10" tracemode="SortByTime"></trace>
99<!-- セッション状態の設定
100
101既定では、ASP.NET は Cookie を使用して、要求がどのセッションに属するかを識別します。
102
103Cookie が使用できない場合は、URL にセッション識別子を入力することで、セッションを見つけることができます。
104
105Cookie を有効にするには、sessionState を cookieless="false" に設定してください。
106
107\-->
108<sessionstate cookieless="false" mode="InProc" sqlconnectionstring="data source=127.0.0.1;Trusted_Connection=yes" stateconnectionstring="tcpip=127.0.0.1:42424" timeout="720"></sessionstate>
109<!-- グローバリゼーション
110shift_jis このセクションはアプリケーションのグローバリゼーション設定を行います。
111utf-8-->
112<globalization requestencoding="utf-8" responseencoding="utf-8"></globalization>
113<database>
114<!--add key="portaldb" value="server=(local)\NetSDK;database=portal;Integrated Security=SSPI" /-->
115** <add key="strConn" value="server=107.12.165.199;database=NWind;uid=NWind;pwd=NWind"></add> **
116</database>
117</system.web>
118<appsettings>
119<add key="NWind" value="server=107.12.165.199;database=NWind;uid=NWind;pwd=NWind;"></add>
120</appsettings>
121</configuration>
连接代码:
using System.Data.SqlClient;
using System.Collections.Specialized;//操作xml所需要的namespace
**string strConn=(String) ((NameValueCollection) Context.GetConfig("system.web/database"))["strConn"];
** 操作代码:
1,通过数据库中的存储过程来操作数据库,通过中间层来做工程是最理想的。能提高安全性和整体性能。
using (SqlConnection conn = new SqlConnection(strConn))
{
SqlCommand cmd = new SqlCommand("sp_SP",conn);
cmd.CommandType=CommandType.StoredProcedure;//声明是调用存储过程
cmd.Parameters.Add("@SNO",SqlDbType.VarChar,9);
cmd.Parameters.Add("@TD",SqlDbType.SmallDateTime);
cmd.Parameters.Add("@S_NOTE",SqlDbType.VarChar,100);//添加变量参数
cmd.Parameters["@SNO"].Value=SNO.Text;
cmd.Parameters["@TD"].Value=CheckBase.Text;
cmd.Parameters["@S_NOTE"].Value=SNote.Text;//给参数付值
conn.Open();
if(cmd.ExecuteNonQuery()!=0)//执行没有返回集合
OKMsg.Text="データ登録完成";
else
OKMsg.Text="データ登録失敗";
}
2,直接输出SQL语句
string strSQL="UPDATE ** NWind ** . ** NUser ** .DATA SET SNO='"+SNO.Text;//SQL Server需要指明该表所在的数据库名和创建该表的用户名
if(CheckBase.Text!="")
strSQL+="',MONTH ='"+CheckBase.Text+"/01";
strSQL+="' WHERE SNO ='"+SNO.Text+"'";
conn.Open();
SqlCommand cmd = new SqlCommand(strSQL,conn);
if(cmd.ExecuteNonQuery()!=0)
OKMsg.Text="データが登録しました";
else
OKMsg.Text="データ登録失敗";
}
3.检索语法SqlDataAdapter 与DataSet 联合使用,一般用于对获得数据集有特殊操作的情况
比较常用
private DataSet GetData()
{
string strConn=(String) ((NameValueCollection) Context.GetConfig("system.web/database"))["strConn"];
using (SqlConnection conn = new SqlConnection(strConn))
{
SqlCommand cmd = new SqlCommand("sp_CO",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@place",SqlDbType.VarChar,2);
cmd.Parameters["@place"].Value=Place.Text;
conn.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand=cmd;
DataSet ds=new DataSet();
da.Fill(ds,"vCO");
//通过DataSet 你可以像对待一个本地数据库,可以存放多个数据表,实现你要达成的功能。具体如表格的处理有列的删除增加,多表之间的处理。等等
Count.Text="ヒット:"+ds.Tables["vCO"].Rows.Count.ToString()+"件";
return ds;
}
}
4,当仅仅用于读取数据的话推荐使用SqlDataReader ,读取速度较上面要快很多
private void DataLoader()
{
string strConn=(String) ((NameValueCollection) Context.GetConfig("system.web/database"))["strConn"];
using (SqlConnection conn = new SqlConnection(strConn))
{
SqlCommand cmd = new SqlCommand("sp_list",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@no",SqlDbType.VarChar,6);
cmd.Parameters["@no"].Value=NO.Text;
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
if(dr.Read())
{
C.Text=dr["C"].ToString(); //通过列名获得数据
M.Text=dr["MTC"].ToString(); //
}
else
OKMsg.Text="このデータがありません、又は定検送り先の値は違法です。";
}
}
}
注意,以上都采用Using(),好处是不需要再给打开的数据库连接,作Close()操作了。
因为本人记性极差,所以很喜欢这个方法
先到这里吧。数据库中存储过程具体怎么做。以后再讲吧。