2017-05-17 6 views
0

私はデータベース内のテーブルに行を挿入することはできません。他人のために働くコードを試してみましたが、不運と思われます。そうするために、ある人が理想を持っていたら、それを私と共有してください。ありがとう。Visual Studio 2017でローカルデータベースに行を挿入するには#

private void button1_Click(object sender, EventArgs e) 
    { 
     string id; 

     SqlConnection sc = new SqlConnection(); 
     SqlCommand com = new SqlCommand(); 
     sc.ConnectionString = Properties.Settings.Default.MyDBConnection; 
     sc.Open(); 
     com.Connection = sc; 
     com.CommandText = ("Select MAX(Id) From Filme"); 
     SqlDataReader drr; 
     drr = com.ExecuteReader(); 
     if (drr.Read()) 
     { 
      id = drr.GetValue(0).ToString(); 
      Id = Int32.Parse(id); 
     } 
     sc.Close(); 
     ++Id; 
     try 
     { 


      sc.Open(); 

      com.CommandText = "INSERT INTO Filme(Id,NumeFilm,Descriere) VALUES (" + Id + ",'" + label1.Text + "','" + label2.Text + "');"; 
      com.ExecuteNonQuery(); 
      MessageBox.Show("Saved"); 
      com.Clone(); 
     }catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     sc.Close(); 
    } 
+4

エラーメッセージを投稿できますか? – Singaravelan

+0

のIDはautoIncrementedですか? –

+1

全体のアプローチは非常にエラーが発生しやすいです:1.次のIDをクエリmax idで検出してください。2. Little Bobby Tablesが挨拶しています –

答えて

0

データベースのIDを自動インクリメントする必要があります。そのため、挿入時に気にする必要はありません。これを行うには、テーブルに移動し、列のプロパティでIDの仕様に移動します。

次に、C#でSqlConnectionを使用するための最良の方法はそうのようなusingブロックである:だから、何が起こることは、あなたと、あなたがコマンドを作成し、たconnectionStringを使用して接続を作成する最初のです

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand("QUERY GOES HERE", connection); 
    connection.Open(); 
    try 
    { 
     command.ExecuteNonQuery(); 
     return true; 
    } 
    catch (SqlException e) 
    { 
     throw e; 
    } 
} 

あなたクエリとその接続。あなたは議会を開き、コマンドを実行しようとします。

また、IDが自動インクリメントされるため、挿入クエリにIDを含める必要はありません。あなたはちょうど言うことができるINSERT INTO Filme(NumeFilm, Descriere) ...

EDIT:私はあなたがMySQLを使用しているのを見ましたが、私は自動インクリメントがどのように働くのかわかりませんが、オプションが必要です。

+0

私はあなたが言ったことを、 – user3720015

関連する問題