4

データベースを使ったアプリケーションの開発に取り組みたいです。私は (アマチュアとして) Web ベースのデータベースの使用 (mysql、pdo、php を使用した mssql、および古いスタイルの ASP) についてかなりの経験があるので、SQL の知識はかなりあります。

私がすでにやったこと..

  • フォーム アプリケーションの作成
  • 4 つのテキスト ボックス (名、姓、電子メール、電話番号) を追加します。
  • データグリッド コントロールを追加しました
  • 「Microsoft SQL Server データベース ファイル (SqlClient)」を使用してデータベース接続を作成しました
  • 4 つのテキスト ボックスに対応するフィールドを含むテーブルを作成しました。

今できるようにしたいのは、ボタンをクリックすると、SQL を使用して 4 つのエディット ボックスの内容が挿入されることです。SQL を隠す「ラッパー」コードを使用したくありません。SQL の経験を最大限に活かしたいと考えています。

したがって、私が求めているのは、そのデータを挿入するために SQL クエリを実行するために必要なコードをどのように記述するかということです。明らかに SQL コードを知る必要はありません。「ローカル データベース ファイル」接続を使用して SQL クエリを実行するための C# コードだけです。

余談ですが、「Microsoft SQL Server Database File」接続タイプを使用するよりも、これを行うためのより良い/簡単な方法はありますか? SQLサーバー)

4

2 に答える 2

0

この最初の例は、理解しやすいと思われる方法に基づいた概要ですが、SQL インジェクションに対する脆弱性があるため、これは推奨されるアプローチではありません (さらに下にあるより良いアプローチ)。でも、分かりやすいと思います。

private void InsertToSql(string wordToInsert)
  {
        string connectionString = Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;

        string queryString = "INSERT INTO table_name (column1) VALUES (" + wordToInsert + ")"; //update as you feel fit of course for insert/update etc

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open()
        SqlDataAdapter adapter = new SqlDataAdapter();
        SqlCommand command = new SqlCommand(queryString, connection);        

        command.ExecuteNonQuery();
        connection.Close();
    }
}

また、エラーが発生した場合に接続を確実に閉じるために、try/catch ブロックでラップすることをお勧めします。

これをテストすることはできませんが、問題ないと思います。

ここでも、SQL インジェクションを許可するため、ライブで上記を実行しないでください。代わりにパラメーターを使用してください。ただし、PHP のバックグラウンドを持っている場合は、上記の手順を実行する方が簡単であると主張される場合があります (慣れるために)。

これはパラメータを使用します:

public void Insert(string customerName)
{
try
   {
    string connectionString = Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
    connection.Open();
    connection.Open() SqlCommand command = new SqlCommand( "INSERT INTO Customers (CustomerName" + "VALUES (@Name)", connection);

    command.Parameters.Add("@Name", SqlDbType.NChar, 50, " + customerName +");
    command.ExecuteNonQuery();
    connection.Close();
    }
 catch()
 {
     //Logic in here
 }
 finally()
 {
    if(con.State == ConnectionState.Open)
    {
        connection.Close();
    }
 }

}

そして、SQL 文字列を変更して選択または追加するだけです。

于 2012-11-26T14:19:11.040 に答える