一.数据库连接 将连接的数据库信息存在下面的文件中,方便统一管理。 Web.config//还不懂这个的。最好好好学学,本人觉得很有用,.NET么当然要用.NET的东西了。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="system.web"> <section name="database" type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" /> </sectionGroup> </configSections>
<system.web>
<!-- ダイナミック デバッグ コンパイル ASPX デバッグを有効にするには、compilation debug="true" に設定します。この値を False に設定すると、 このアプリケーションの実行時のパフォーマンスが向上します。
デバッグ シンボル (.pdb 情報) をコンパイルされたページに挿入するには、
compilation debug="true" に設定します。この設定によって、実行速度の遅い大きなファイルが作成されます。
デバッグ時にのみ、この値を true に設定して、
それ以外のときは、常に false に設定してください。詳細については、
ASP .NET ファイルのデバッグ ドキュメントを参照してください。
--> <compilation defaultLanguage="c#" debug="true" > <assemblies> </assemblies> </compilation>
<!-- カスタム エラー メッセージの設定
カスタム エラー メッセージを有効にするには customErrors mode="On"または "RemoteOnly" にします。無効にする場合は "Off" に設定します。
処理する各エラーに <error> タグを追加してください。 defaultRedirect="err.htm"
"オン" 常にカスタム (理解しやすい) メッセージを表示します。
"オフ" 常に詳細な ASP.NET エラー情報を表示します。
"リモートのみ" ローカル Web サーバーで実行していないユーザーに対してのみ、
常にカスタム (理解しやすい) メッセージを表示します。この設定は、セキュリティを考慮して、アプリケーションの詳細がリモートのクライアントに 表示されないようにする推奨された設定です。
--> <customErrors mode="RemoteOnly" defaultRedirect="/main/defaultError.aspx"> <error statusCode="404" redirect="/main/Error500.htm" /> <error statusCode="500" redirect="/main/Error500.htm"/>
</customErrors>
<!-- 認証の設定 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' このセクションは、アプリケーションの認証ポリシーを設定します。使用できるモードは、"Windows"、
"Forms"、"Passport" および "None" です。
"None" 認証が実行されません。 "Windows" IIS はアプリケーションの設定に従って認証 (基本、ダイジェスト、または統合 Windows) を実行します。匿名アクセスは IIS では無効でなければなりません。
"Forms" ユーザーが資格情報を入力するカスタム フォーム (Web ページ) を提供してください。
そして、アプリケーションで認証してください。ユーザーの資格情報のトークンは Cookie に保存されています。
"Passport" 認証は、単一のログオンおよびメンバ サイトのコア プロファイル サービスを提供する Microsoft により提供される管理認証サービスを使用して実行されます。
--> <identity impersonate="true"/> <authentication mode="Windows" /> <!-- 権限の設定
このセクションは、アプリケーションの権限のポリシーを設定します。この設定により、ユーザーまたはロールによるアプリケーション リソースへのアクセスを許可したり、
拒否したりできます。ワイルドカード : "*" は全員を、"?" は匿名 (未認証) ユーザーを表します。
-->
<authorization> <allow users="*" /> <!-- * 全ユーザーへの許可 --> <!-- <allow users="[ユーザーのコンマ区切り一覧]" roles="[ロールのコンマ区切り一覧]"/> <deny users="[ユーザーのコンマ区切り一覧]" roles="[ロールのコンマ区切り一覧]"/> --> </authorization>
<!-- アプリケーション レベルのトレース ログの設定
アプリケーション レベルのトレースは、アプリケーション内の全ページのトレース ログ出力を有効にします。
アプリケーション トレース ログを有効にするには、trace enabled="true" に設定します。pageOutput="true" に設定された場合、
トレース情報が各ページの下に表示されます。それ以外の場合は、
Web アプリケーション ルートから "trace.axd" ページを参照してアプリケーション トレースを
表示できます。
--> <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<!-- セッション状態の設定
既定では、ASP.NET は Cookie を使用して、要求がどのセッションに属するかを識別します。
Cookie が使用できない場合は、URL にセッション識別子を入力することで、セッションを見つけることができます。
Cookie を有効にするには、sessionState を cookieless="false" に設定してください。
--> <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="720" />
<!-- グローバリゼーション shift_jis このセクションはアプリケーションのグローバリゼーション設定を行います。 utf-8--> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> <database> <!--add key="portaldb" value="server=(local)\NetSDK;database=portal;Integrated Security=SSPI" /--> <add key="strConn" value="server=107.12.165.199;database=NWind;uid=NWind;pwd=NWind" /> </database>
</system.web> <appSettings> <add key="NWind" value="server=107.12.165.199;database=NWind;uid=NWind;pwd=NWind;" /> </appSettings>
</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()操作了。 因为本人记性极差,所以很喜欢这个方法
先到这里吧。数据库中存储过程具体怎么做。以后再讲吧。

|