アクセス利用概要
2022-01-16 01:45:40
1. Accessの使い方
2年前に少しAccessを使いましたが、小さな不具合が多いと感じているので、もう使っていません。プログラムは、ギガビットワイドウェブのウェブホストに配置され、このWebホストは、Sqliteをサポートしていない、データを読み取る限り、データベースへの書き込みとして、それはエラーを報告します、いくつかのディスクI/Oエラーが発生しました。これは、私のプログラムの問題ではないことを意味します。主な問題は、接続文字列であり、いくつかのデータベースの違いに注意を払う必要があります。
1.1 データベース接続文字列
<add name="ConnectionString" connectionString="data source=|DataDirectory|wewe.mdb;Provider=Microsoft.Jet.OLEDB.4.0& quot; /> 接続文字列は非常にシンプルで、データソースを指定するだけです、ここで |DataDirectory| は App_Data ディレクトリです、この Asp.net の方法によってデータベースファイルの場所を簡単に相対パスで指定できるのです。ここでは、ProviderはOledbドライバを使用しています。
1.2 使用方法
プログラムでの使い方は非常に簡単で、Connection, Commandの前の接頭辞を置き換えるだけで完了です。例を挙げます。
public DataTable GetAll(string num,int min,int startRecord, int pageSize)
{
string sql = string.Format("select Num ,minPrice ,isUsed from PhoneNumber where Num like '{0}%' and isUsed=0", num);
if (min ! = 0)
{
sql += "and minPrice=@p1";
}
using (OleDbConnection conn = new OleDbConnection(SqlHelper.ConnStr))
{
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
if (min ! = 0)
cmd.Parameters.AddWithValue("p1", min);
OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
DataTable table = new DataTable();
adp.Fill(startRecord,pageSize,table);
return table;
}
}
そしてもちろん、using System.Data.OleDbを追加します。
実は、ADO.NETにはConnectionやCommandなどのDbを先頭に持つクラス群があり、これらの特定のクラスはすべてDbConnectionを継承しているので、見た目はすべて同じです。
1.3 差異点
上記のように、Accessは厄介です。以下は、私が遭遇したことのあるもののリストです。
1.3.1 user はキーワードなので、テーブル名やカラム名で括弧のない user があるとエラーになります。もちろん、すべてのテーブル名とカラム名を一貫して括弧で囲むことは、良いプログラミングの習慣です。
1.3.2 DateTime型のデータを直接挿入すると、データベースのフィールド型が確かにDateで、挿入する方法がC#のDateTime型のToString()をかぶせたとしても、エラーが報告されます。
1.3.3 yesnoというbool型(ビット型)は存在しない ......。
1.3.4 No more than one sql in a command. この制限も厄介です。1つのコマンド実行につき、1つのsqlしか含めることができないので、非常に不便です。Sqliteなどの小さなデータベースには、この制限はありません。
1.3.5 パラメータの順序の問題。コマンドに追加するパラメータの宣言と、宣言されたパラメータの順序が一致している必要があります。そうでない場合、何も報告されず、結果にも影響がない可能性が高いです (更新時、試行時ではありません)。Accessは本当に優秀なデータベースアッ 例えば
string sql = "update [user] set WorkField=@p1, Company=@p3,IC=@p4,Contact=@p5,Phone=@p6,Mobile=@p7,Address=@p8,Email=@p9, Introduction=@p10 "
+ "where username=@p2";
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("p1", entity.WorkField);
cmd.Parameters.AddWithValue("p3", entity.Company);
cmd.Parameters.AddWithValue("p4", entity.IC);
cmd.Parameters.AddWithValue("p5", entity.Contact);
cmd.Parameters.AddWithValue("p6", entity.Phone);
cmd.Parameters.AddWithValue("p7", entity.Mobile);
cmd.Parameters.AddWithValue("p8","");
cmd.Parameters.AddWithValue("p9", string.IsNullOrEmpty(entity.Email)? " ":entity.Email);
cmd.Parameters.AddWithValue("p10", string.IsNullOrEmpty(entity.Introduction)? " ":entity.Introduction);
cmd.Parameters.AddWithValue("p2", entity.UserName);
int i= cmd.ExecuteNonQuery(); This is fine, but putting
cmd.Parameters.AddWithValue("p2", entity.UserName);
更新ができません。幸い、csdnで検索したら、この質問をした人がいたのですが、そうでなければ、入手方法がわかりません。
2. z-indexの問題。
他のHTML要素の内部に含まれるHTML要素のz-indexは、同じレベルに位置する要素のz-indexとの相対関係のみで、その親要素の外側にある要素のz-indexには影響しません。つまり、親要素のz-indexが0など小さく、内部要素のz-indexが大きい場合、親要素に隣接する要素のz-indexは1000、 indexは2、内部要素がオーバーフローして隣接要素と重なってもカバーすることになります。
2年前に少しAccessを使いましたが、小さな不具合が多いと感じているので、もう使っていません。プログラムは、ギガビットワイドウェブのウェブホストに配置され、このWebホストは、Sqliteをサポートしていない、データを読み取る限り、データベースへの書き込みとして、それはエラーを報告します、いくつかのディスクI/Oエラーが発生しました。これは、私のプログラムの問題ではないことを意味します。主な問題は、接続文字列であり、いくつかのデータベースの違いに注意を払う必要があります。
1.1 データベース接続文字列
<add name="ConnectionString" connectionString="data source=|DataDirectory|wewe.mdb;Provider=Microsoft.Jet.OLEDB.4.0& quot; /> 接続文字列は非常にシンプルで、データソースを指定するだけです、ここで |DataDirectory| は App_Data ディレクトリです、この Asp.net の方法によってデータベースファイルの場所を簡単に相対パスで指定できるのです。ここでは、ProviderはOledbドライバを使用しています。
1.2 使用方法
プログラムでの使い方は非常に簡単で、Connection, Commandの前の接頭辞を置き換えるだけで完了です。例を挙げます。
コピーコード
コードは以下の通りです。
public DataTable GetAll(string num,int min,int startRecord, int pageSize)
{
string sql = string.Format("select Num ,minPrice ,isUsed from PhoneNumber where Num like '{0}%' and isUsed=0", num);
if (min ! = 0)
{
sql += "and minPrice=@p1";
}
using (OleDbConnection conn = new OleDbConnection(SqlHelper.ConnStr))
{
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
if (min ! = 0)
cmd.Parameters.AddWithValue("p1", min);
OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
DataTable table = new DataTable();
adp.Fill(startRecord,pageSize,table);
return table;
}
}
そしてもちろん、using System.Data.OleDbを追加します。
実は、ADO.NETにはConnectionやCommandなどのDbを先頭に持つクラス群があり、これらの特定のクラスはすべてDbConnectionを継承しているので、見た目はすべて同じです。
1.3 差異点
上記のように、Accessは厄介です。以下は、私が遭遇したことのあるもののリストです。
1.3.1 user はキーワードなので、テーブル名やカラム名で括弧のない user があるとエラーになります。もちろん、すべてのテーブル名とカラム名を一貫して括弧で囲むことは、良いプログラミングの習慣です。
1.3.2 DateTime型のデータを直接挿入すると、データベースのフィールド型が確かにDateで、挿入する方法がC#のDateTime型のToString()をかぶせたとしても、エラーが報告されます。
1.3.3 yesnoというbool型(ビット型)は存在しない ......。
1.3.4 No more than one sql in a command. この制限も厄介です。1つのコマンド実行につき、1つのsqlしか含めることができないので、非常に不便です。Sqliteなどの小さなデータベースには、この制限はありません。
1.3.5 パラメータの順序の問題。コマンドに追加するパラメータの宣言と、宣言されたパラメータの順序が一致している必要があります。そうでない場合、何も報告されず、結果にも影響がない可能性が高いです (更新時、試行時ではありません)。Accessは本当に優秀なデータベースアッ 例えば
コピーコード
コードは以下の通りです。
string sql = "update [user] set WorkField=@p1, Company=@p3,IC=@p4,Contact=@p5,Phone=@p6,Mobile=@p7,Address=@p8,Email=@p9, Introduction=@p10 "
+ "where username=@p2";
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("p1", entity.WorkField);
cmd.Parameters.AddWithValue("p3", entity.Company);
cmd.Parameters.AddWithValue("p4", entity.IC);
cmd.Parameters.AddWithValue("p5", entity.Contact);
cmd.Parameters.AddWithValue("p6", entity.Phone);
cmd.Parameters.AddWithValue("p7", entity.Mobile);
cmd.Parameters.AddWithValue("p8","");
cmd.Parameters.AddWithValue("p9", string.IsNullOrEmpty(entity.Email)? " ":entity.Email);
cmd.Parameters.AddWithValue("p10", string.IsNullOrEmpty(entity.Introduction)? " ":entity.Introduction);
cmd.Parameters.AddWithValue("p2", entity.UserName);
int i= cmd.ExecuteNonQuery(); This is fine, but putting
cmd.Parameters.AddWithValue("p2", entity.UserName);
更新ができません。幸い、csdnで検索したら、この質問をした人がいたのですが、そうでなければ、入手方法がわかりません。
2. z-indexの問題。
他のHTML要素の内部に含まれるHTML要素のz-indexは、同じレベルに位置する要素のz-indexとの相対関係のみで、その親要素の外側にある要素のz-indexには影響しません。つまり、親要素のz-indexが0など小さく、内部要素のz-indexが大きい場合、親要素に隣接する要素のz-indexは1000、 indexは2、内部要素がオーバーフローして隣接要素と重なってもカバーすることになります。
関連
-
AccessでMicrosoft JET Database Engine (0x80004005) not specifiedエラーを解決する。
-
1つのSQL実装で2つのテーブルを更新し、対応するフィールドの値を更新します。
-
どのように実装方法を並べ替えるために1からアクセス自動番号を作成する
-
ACCESSデータベースファイルの圧縮と修復方法[グラフィック]。
-
AccessでSQLを実行する方法
-
アクセスコメントフィールドの64K制限
-
ACCESSラーニングダイアリー
-
中国語Access2000速習講座 - 1.6 "主キー "を定義する
-
Accessデータベースの定期メンテナンス方法(最適化)
-
Accessで指定日以前のレコードを選択する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Accessでデータベースの内容を一括で置き換える2つの方法
-
アクセスデータベースは、フィールドを追加し、フィールドを変更し、SQLステートメントでフィールドを削除する
-
ADODB接続からアクセスは80004005エラー解決法
-
Accessに「検索キーワードに該当するレコードがすべて見つかりません」というエラーが表示される 解決方法
-
ACCESSのパラメータ付きクエリ、VBSCRIPT(ASP)およびC#(ASP.NET)関数付き
-
中型Accessデータベースの長期使用によるちょっとした経験とデメリット
-
中国語Access2000クイックチュートリアル - 1.5 既存のデータを使用して自動的に新しいテーブルを構築します。
-
バックグラウンドのストアドプロシージャを呼び出すACCESSの実装方法
-
Access データベースで、OleDbException (0x80004005) が発生しました。操作は更新可能なクエリを使用しなければなりません
-
予約語・変数名リストへのアクセス