2017-05-17 41 views
0

帮助我只是不能将行插入到数据库的表中,而且我尝试过的代码可以用于其他人,但似乎我很不吉利,而且我不知道还有什么要做的,如果有人得到了一个ideea请与我分享。谢谢。使用c将行插入到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确定下一个ID 2.小鲍比表问候 –

回答

0

您应该自动递增数据库中的ID,因此插入时不必担心。为此,请转到表格,并在列的属性中转到标识规范。

接下来,在C#中使用SqlConnection最好的办法是用using块,像这样:

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; 
    } 
} 

那么,什么情况是首先你使用的ConnectionString创建连接,然后你创建一个命令你查询和连接。您打开该连接,然后尝试执行该命令。

此外,由于您的ID是自动递增的,因此您无需将其包含在插入查询中。所以你可以说INSERT INTO Filme(NumeFilm, Descriere) ...

编辑:我看到你正在使用MySQL,我不知道如何自动增量工作,但应该有一个选项。

+0

我试过你说的仍然是一样的没有错误,但在表中没有变化... – user3720015

相关问题