2013-10-03 80 views
1

我寫了一段代碼,它會自動從我的SQL Server 2012 Express表中登錄並讀取信息。但它不會工作,這裏是代碼:SQL服務器express,無法讀取或寫入C#

private void Form1_Load(object sender, EventArgs e) 
    { 
     SqlConnection myConnection = new SqlConnection("user id=myComputer;" + "server=MYCOMPUTER-PC\\SQLEXPRESS;" + 
       "Trusted_Connection=yes;" + "database=loginTest; " + "connection timeout=5"); 
     try 
     { 
      myConnection.Open(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
     SqlCommand myCommand = new SqlCommand("INSERT INTO dbo.Logins Values ('John','Password','Admin')", myConnection); 
     try 
     { 
      SqlDataReader myReader = null; 
      SqlCommand myCommand1 = new SqlCommand("select * from Logins", 
                myConnection); 
      myReader = myCommand1.ExecuteReader(); 
      while (myReader.Read()) 
      { 
       MessageBox.Show(myReader["Column1"].ToString()); 
       MessageBox.Show(myReader["Column2"].ToString()); 
      } 
     } 
     catch (Exception ex1) 
     { 
      MessageBox.Show(ex1.ToString()); 
     } 
    } 

我已經調試的程序,這一切似乎都要經過精細,它跳過:

 { 
      MessageBox.Show(myReader["Column1"].ToString()); 
      MessageBox.Show(myReader["Column2"].ToString()); 
     } 

出於某種原因,並且它不寫我告訴它的價值。

有誰能告訴我爲什麼? IM在SQL初學者,這樣下去容易請:)

PS它不解僱任何錯誤代碼或異常

+3

你永遠[執行](HTTP:/ /msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx)'INSERT'命令 – GolfWolf

+0

offtopic提示:儘量不要用這麼多的try-catch塊污染你的代碼。 – GolfWolf

回答

4

Logins表中沒有任何記錄,如果你的意思是你想嘗試先插入一些記錄來測試,這是該行造成您的問題:

SqlCommand myCommand = new SqlCommand("INSERT INTO dbo.Logins Values ('John','Password','Admin')", myConnection); 
myCommand.ExecuteNonQuery();//Do this to insert something into your Logins first. 
+0

謝謝!那麼爲什麼它需要這樣做呢? – user2827904

+0

@ user2827904調用'ExecuteNonQuery'將正式** **對您的表執行查詢。你應該更多地搜索'ExecuteNonQuery'。當然,正如我所說,如果你的表有一些記錄,你的代碼可以工作,但它沒有。插入這種方式**只是爲了確保有一些記錄用於測試下一個SELECT查詢**,通常我們不會做這樣的事情(插入第一個,之後選擇) –

4

它跳過[...]

據推測這是因爲有沒有數據可讀,所以myReader.Read()只是返回false

它沒有寫我告訴它的值。

你實際上沒有告訴它寫任何東西。你創建一個SqlCommand來插入數據,但你永遠不會執行它。您需要使用myCommand.ExecuteNonQuery。您還應該爲命令,連接和閱讀器使用using語句,以確保它們正確關閉。