2012-05-14 95 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))'''。相应地编辑我的答案。 –

相关问题