2012-05-14 131 views
0

net添加數據庫。我正在嘗試在兩個文本框和下拉列表中的一個選定值上添加文本以添加我的表格。 這裏是我的代碼Asp.net從文本框和下拉列表中添加數據庫

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 

public partial class _Default : System.Web.UI.Page 

{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     string connectionString = @" Data Source=.\SQLEXPRESS;AttachDbFilename=C:\USERS\CEM\DOCUMENTS\VISUAL STUDIO 2010\WEBSITES\EKLEMEDENE\APP_DATA\DATABASE.MDF;Integrated Security=True;User Instance=True"; 
     string queryString = "INSERT INTO ekle(flight, name, food) VALUES ('" + TextBox1.Text + " ' , '" + TextBox2.Text + " ' , '" + DropDownList1.SelectedValue + " ' )"; 
     SqlConnection con = new SqlConnection(connectionString); 
     SqlCommand command = new SqlCommand(queryString, con); 
     con.Open(); 
     command.ExecuteNonQuery(); 

     con.Close(); 
    } 
} 

後,我執行我會有錯誤

數據庫 'C:\用戶\傑姆\文檔\ Visual Studio 2010的\網站已\ eklemedene \ App_Data文件\ Database.mdf'已經存在。選擇不同的數據庫名稱。 嘗試附加文件C:\ USERS \ CEM \ DOCUMENTS \ VISUAL STUDIO 2010 \ WEBSITES \ EKLEMEDENE \ APP_DATA \ DATABASE.MDF的自動命名數據庫失敗。具有相同名稱的數據庫存在,或指定的文件無法打開,或位於UNC共享上。

+1

你的連接字符串是錯誤的。 您正試圖附加一個已經存在的數據庫。您需要指向承載附加數據庫的數據庫服務器。 嘗試使用類似http://www.developerfusion.com/tools/sql-connection-string/來生成連接字符串 –

+0

或者在http://connectionstrings.com/找到適當的連接字符串 –

回答

1
  1. 您已經開放SQL注入。避免直接從控件傳遞參數。請使用Parameters
  2. 使用using-statement實施IDisposable像連接或命令任何東西:
  3. 有一些問題與您的ConnectionString,您可以嘗試使用SqlConnectionStringBuilder類:

//Build the connection 
SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder(); 

//Put your server or server\instance name here. Likely YourComputerName\SQLExpress 
bldr.DataSource = ".\\SQLEXPRESS"; 

//Attach DB Filename 
bldr.AttachDBFilename = @"C:\USERS\CEM\DOCUMENTS\VISUAL STUDIO 2010\WEBSITES\EKLEMEDENE\APP_DATA\DATABASE.MDF"; 

//User Instance 
bldr.UserInstance = true; 

//Whether or not a password is required. 
bldr.IntegratedSecurity = true; 

using(var connection = new SqlConnection(bldr.ConnectionString)) 
{ 
    var sql = "INSERT INTO ekle(flight, name, food) VALUES (@flight, @name , @food)"; 
    using(var command = new SqlCommand(sql, connection)) 
    { 
     command.Parameters.AddWithValue("@flight", TextBox1.Text); 
     command.Parameters.AddWithValue("@name", TextBox2.Text); 
     command.Parameters.AddWithValue("@food", DropDownList1.SelectedValue); 
     connection.Open(); 
     command.ExecuteNonQuery(); 
    } 
} // closes the connection implicitely 
+0

隨着你的答案我會名稱con在當前上下文中不存在,我可以在哪裏看到我的服務器/實例名稱 – Cem

+0

@cem:我寫過沒有IDE的文件,那只是一個錯字。因此,使用(var command = new SqlCommand(sql,connection))'替換'使用(var命令=新的SqlCommand(sql,con))'''。相應地編輯我的答案。 –

相關問題