如何在创建表之前判断此表在数据库中是否存在?急求!! if exists(select * from sysobjects where name ='表名') 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IF OBJECT_ID (N'bas_CardType') IS NULLBEGIN --如果不存在该表,则进行创建 --drop table com_CodeRecord CREATE TABLE bas_CardType ( FKey UNIQUEIDENTIFIER --创建默认值 CONSTRAINT DF_bas_CardType_FKey DEFAULT (newid()) NOT NULL, --不允许为空 FCode NVARCHAR(20), FName NVARCHAR(20) CONSTRAINT PK_bas_CardType PRIMARY KEY (FKey) --主键 ) PRINT 'bas_CardType created'END 我把我的代码发给你看下,版主! private void CreatandInsert() { string connectionString = "data source=QT-201309102116\\SQLEXPRESS;uid=sa;pwd=123456;database=gongan_183"; ArrayList al = new ArrayList(); foreach (DataTable dt in dataSet.Tables) { string sql_creat = "Create Table " + Table_Name + " ( "; foreach( DataColumn dc in dt.Columns ) { //MessageBox.Show(dc.ColumnName);//列名 sql_creat = sql_creat + dc.ColumnName.Replace(" ", "") +" "; string datatype_test = dc.DataType.ToString(); string sql_datatype; if (datatype_test == "System.Decimal") { sql_datatype = "decimal"; sql_creat += sql_datatype + ", "; } if (datatype_test == "System.String") { //string dcname = dc.ColumnName.ToString(); //int len = dcname.Length; sql_datatype = "varchar(240)"; sql_creat += sql_datatype + ", "; } if (datatype_test == "System.Boolean") { sql_datatype="bit"; sql_creat += sql_datatype + ", "; } if (datatype_test == "System.DateTime") { sql_datatype = "datetime"; sql_creat += sql_datatype + ", "; } if (datatype_test == "System.Int") { sql_datatype = "int"; sql_creat += sql_datatype + ", "; } } sql_creat = sql_creat.Substring(0, sql_creat.Length - 2) + ") "; al.Add(sql_creat); try { SqlConnection con = new SqlConnection(connectionString); SqlCommand cmd1 = new SqlCommand(sql_creat, con); con.Open(); cmd1.ExecuteNonQuery(); con.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } int a = 0; dataChanged(a); foreach(DataRow dr in dt.Rows) { string sql_insert = "insert into " + Table_Name + " ( "; foreach (DataColumn dc in dt.Columns) { sql_insert = sql_insert + dc.ColumnName.Replace(" ", "") + ","; } sql_insert = sql_insert.Substring(0, sql_insert.Length - 1) + ")"; sql_insert += " values ("; i = 0; foreach (DataColumn dc in dt.Columns) { string s = dr.ItemArray[i].ToString().Trim(); if (s == "") { sql_insert = sql_insert + "' ',"; } else { sql_insert = sql_insert + "'"+dr.ItemArray[i].ToString().Trim() + "',"; } i++; } sql_insert = sql_insert.Substring(0, sql_insert.Length - 1) + ")"; al.Add(sql_insert); try { SqlConnection con = new SqlConnection(connectionString); SqlCommand cmd2 = new SqlCommand(sql_insert, con); con.Open(); cmd2.ExecuteNonQuery(); con.Close(); } catch(Exception ex) { Console.WriteLine(ex.Message); } a++; dataChanged((a*100)/dt.Rows.Count); } dataChanged(100); MessageBox.Show("导入成功!!"); } } string sql_creat = "Create Table " + Table_Name + " ( "; 这一语句改成string sql_creat = "if not exists(select * from sysobjects where name ='"+Table_Name+"') Create Table " + Table_Name + " ( "; 貌似不行啊!if exists这句是sql代码的你要用cmd执行 SELECT COUNT(*) AS Expr1FROM sysobjectsWHERE name ='"+Table_Name+"'返回1就存在 http://bbs.csdn.net/topics/390585105不久前有人发的帖子 SqlConnection con = new SqlConnection("Data Source=10.168.1.5;Initial Catalog=data;User ID=sa;password=sa;Integrated Security=False"); con.Open(); string sql="SELECT COUNT(*) FROM sysobjects WHERE name ='"+Table_Name+"'"; SqlCommand cmd = new SqlCommand(sql, con); if ((int)cmd.ExecuteScalar() > 0) { listBox1.Items.Add(s1 + " 表已经存在"); } cmd.Dispose(); con.Close(); messagebox.show("表已经存在!"); 深度贴MySql.Data.MySqlClient连接远程服务器异常 对属性的取值的操作中效率 textbox webbrowser如何获取正在网页当前的源代码? c#怎样编写ActiveX控件? 求第三方datagridview控件 如何对数据集中的表执行select查询? 如何用正则表达式获取指定内容? 求DevExpress控件下载 用c#向ip138.com发信息查ip归属地,为什么有的正确,有的错误呀。 串口接收中文时乱码 WCF,创建数据协定,为什么报错呢?
IF OBJECT_ID (N'bas_CardType') IS NULL
BEGIN --如果不存在该表,则进行创建
--drop table com_CodeRecord
CREATE TABLE bas_CardType
(
FKey UNIQUEIDENTIFIER
--创建默认值
CONSTRAINT DF_bas_CardType_FKey DEFAULT (newid())
NOT NULL, --不允许为空
FCode NVARCHAR(20),
FName NVARCHAR(20)
CONSTRAINT PK_bas_CardType PRIMARY KEY (FKey) --主键
)
PRINT 'bas_CardType created'
END
我把我的代码发给你看下,版主! private void CreatandInsert()
{
string connectionString = "data source=QT-201309102116\\SQLEXPRESS;uid=sa;pwd=123456;database=gongan_183";
ArrayList al = new ArrayList();
foreach (DataTable dt in dataSet.Tables)
{
string sql_creat = "Create Table " + Table_Name + " ( ";
foreach( DataColumn dc in dt.Columns )
{
//MessageBox.Show(dc.ColumnName);//列名
sql_creat = sql_creat + dc.ColumnName.Replace(" ", "") +" ";
string datatype_test = dc.DataType.ToString();
string sql_datatype;
if (datatype_test == "System.Decimal")
{
sql_datatype = "decimal";
sql_creat += sql_datatype + ", ";
}
if (datatype_test == "System.String")
{
//string dcname = dc.ColumnName.ToString();
//int len = dcname.Length;
sql_datatype = "varchar(240)";
sql_creat += sql_datatype + ", ";
}
if (datatype_test == "System.Boolean")
{
sql_datatype="bit";
sql_creat += sql_datatype + ", ";
}
if (datatype_test == "System.DateTime")
{
sql_datatype = "datetime";
sql_creat += sql_datatype + ", ";
}
if (datatype_test == "System.Int")
{
sql_datatype = "int";
sql_creat += sql_datatype + ", ";
} }
sql_creat = sql_creat.Substring(0, sql_creat.Length - 2) + ") ";
al.Add(sql_creat);
try
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd1 = new SqlCommand(sql_creat, con);
con.Open();
cmd1.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
int a = 0;
dataChanged(a);
foreach(DataRow dr in dt.Rows)
{
string sql_insert = "insert into " + Table_Name + " ( ";
foreach (DataColumn dc in dt.Columns)
{
sql_insert = sql_insert + dc.ColumnName.Replace(" ", "") + ",";
}
sql_insert = sql_insert.Substring(0, sql_insert.Length - 1) + ")";
sql_insert += " values (";
i = 0;
foreach (DataColumn dc in dt.Columns)
{
string s = dr.ItemArray[i].ToString().Trim();
if (s == "")
{
sql_insert = sql_insert + "' ',";
}
else
{
sql_insert = sql_insert + "'"+dr.ItemArray[i].ToString().Trim() + "',";
}
i++;
}
sql_insert = sql_insert.Substring(0, sql_insert.Length - 1) + ")";
al.Add(sql_insert);
try
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd2 = new SqlCommand(sql_insert, con);
con.Open();
cmd2.ExecuteNonQuery();
con.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
a++;
dataChanged((a*100)/dt.Rows.Count);
} dataChanged(100);
MessageBox.Show("导入成功!!");
}
}
这一语句改成
string sql_creat = "if not exists(select * from sysobjects where name ='"+Table_Name+"') Create Table " + Table_Name + " ( ";
貌似不行啊!
if exists这句是sql代码的你要用cmd执行
FROM sysobjects
WHERE name ='"+Table_Name+"'
返回1就存在
不久前有人发的帖子
con.Open();
string sql="SELECT COUNT(*) FROM sysobjects WHERE name ='"+Table_Name+"'";
SqlCommand cmd = new SqlCommand(sql, con);
if ((int)cmd.ExecuteScalar() > 0)
{
listBox1.Items.Add(s1 + " 表已经存在");
} cmd.Dispose();
con.Close();