2013-10-25 45 views
11

我正嘗試以編程方式創建SQL Server表。這是代碼。C# - 以編程方式創建SQL Server表

using (SqlConnection con = new SqlConnection(conStr)) 
{ 

    try 
    { 
     // 
     // Open the SqlConnection. 
     // 
     con.Open(); 
     // 
     // The following code uses an SqlCommand based on the SqlConnection. 
     // 
     using (SqlCommand command = new SqlCommand("CREATE TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date datetime);", con)) 
      command.ExecuteNonQuery(); 

    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

當我跑步時我發現了一個例外,該應用程序第二次:

「已經有一個名爲‘客戶’數據庫中的對象」

但當我檢查數據庫時,我沒有看到這樣的表格。
這是我的連接字符串。

<connectionStrings> 
    <add name ="AutoRepairSqlProvider" connectionString= 
    "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AutoRepairDatabase.mdf; 
    Integrated Security=True;User Instance=True"/> 
</connectionStrings> 

當我運行時選擇查詢;我從現有的表中獲得結果,所以我認爲連接字符串應該可以。希望你會看到這個問題:/

+7

嘗試刷新您的SQL資源管理器窗口:) –

+3

這是不可能的;)您正在檢查不正確的數據庫或表在那裏,你不明白爲什麼。 –

+1

我正在檢查正確的數據庫,因爲我可以從中讀取數據 – user2412672

回答

11

您沒有提到Initial catalog連接字符串中的名稱。將數據庫名稱命名爲Initial Catalog名稱。

<add name ="AutoRepairSqlProvider" connectionString= 
    "Data Source=.\SQLEXPRESS; Initial Catalog=MyDatabase; AttachDbFilename=|DataDirectory|\AutoRepairDatabase.mdf; 
    Integrated Security=True;User Instance=True"/> 
+0

哦!數據庫名稱不是他們在他的連接字符串中。但是如何顯示這個錯誤信息''在數據庫中已經有一個名爲'Customer'的對象了?? –

+7

@Ramesh - 您可能在'Master'數據庫中創建了'Customer'。 – Damien

0

試試這個

檢查是否有表那裏,刪除表,然後創建

using (SqlCommand command = new SqlCommand("IF EXISTS (
SELECT * 
FROM sys.tables 
WHERE name LIKE '#Customer%') 
DROP TABLE #Customer CREATE TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date datetime);", con)) 
4

首先檢查。如果不存在,則創建表。

var commandStr= "If not exists (select name from sysobjects where name = 'Customer') CREATE TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date datetime)"; 

using (SqlCommand command = new SqlCommand(commandStr, con)) 
command.ExecuteNonQuery(); 
0
using System; 
using System.Data; 
using System.Data.SqlClient; 

namespace SqlCommend 
{ 
    class sqlcreateapp 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       SqlConnection conn = new SqlConnection("Data source=USER-PC; Database=Emp123;User Id=sa;Password=sa123"); 
       SqlCommand cmd = new SqlCommand("create table <Table Name>(empno int,empname varchar(50),salary money);", conn); 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       Console.WriteLine("Table Created Successfully..."); 
       conn.Close(); 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine("exception occured while creating table:" + e.Message + "\t" + e.GetType()); 
      } 
      Console.ReadKey(); 
     } 
    } 
} 
+1

請添加更多的細節 – a4arpan

0

如果你不喜歡回憶的SQL語法,使用Mig#您可以簡單:

var schema = new DbSchema(ConnectionString, DbPlatform.SqlServer2014); 
schema.Alter(db => db.CreateTable("Customer") 
    .WithPrimaryKeyColumn("Id", DbType.Int32).AsIdentity() 
    .WithNotNullableColumn("First_Name", DbType.String).OfSize(50) 
    .WithNotNullableColumn("Last_Name", DbType.String).OfSize(50) 
    ...); 

如果你不知道,如果它已經存在,請撥打DropIfExists前:

db.Tables["Customers"].DropIfExists(); 
0

試試這個:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection cn = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True"); 
    try 
    { 
     cn.Open(); 
     SqlCommand cmd = new SqlCommand("create table Employee (empno int,empname varchar(50),salary money);", cn); 
     cmd.ExecuteNonQuery(); 
     lblAlert.Text = "SucessFully Connected"; 
     cn.Close(); 
    } 
    catch (Exception eq) 
    { 
     lblAlert.Text = eq.ToString(); 
    } 
} 
相關問題