asp.net后台老板创建数据表出错
asp.net后台创建数据表出错
这是我创建数据表的代码 因为每个班的课程不同 所以列名不一定相同
string tablename = tbtable.Text;
string sqlStr = "create table"+" ";
sqlStr += tablename + "(";
sqlStr += "表编号 bigint identity(1000,1) primary key,";
sqlStr += "系别 varchar(50),";
sqlStr += "班别 varchar(50),";
sqlStr += "学号 bigint foreign key references studentInfomation(学号),";
for (int i = 0; i < tablesource.Rows.Count; i++)
{
sqlStr += tablesource.Rows[i]["课程名"].ToString()+"int,";
}
sqlStr += ")";
这是我实现创建的代码
SqlConnection conn = sqlDate.Conn();
SqlCommand cmd = new SqlCommand(sqlStr,conn);
cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
这是我sqlDate类里面的代码 本来没有Conn()这个方法的 但是前面的SqlCommand cmd 又需要conn 我就又创了个能有返回值的创建SqlConnection的方法
static SqlConnection conn;
public sqlDate()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static SqlConnection Conn() {
if (conn == null)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["InfomationConnectionString"].ToString());
//conn = new SqlConnection("server=localhost;database=Infomation;Trusted_Connection=yes");
}
if (conn.State == System.Data.ConnectionState.Closed)
{
conn.Open();
}
return conn;
}
public static void Open()
{
if (conn == null)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["InfomationConnectionString"].ToString());
//conn = new SqlConnection("server=localhost;database=Infomation;Trusted_Connection=yes");
}
if (conn.State == System.Data.ConnectionState.Closed)
{
conn.Open();
}
}
最后运行时提示'(' 附近有语法错误。
错误指向cmd.ExecuteNonQuery();
希望大家帮我看看问题出在哪里 谢谢
------解决思路----------------------
在for循环里面,字段名和数据类型Int之间没有空格分开,另外循环的最后一个的时候,应该不要逗号了,所以在循环后把最后一个逗号去掉(比如用SubString)。
如果还有问题,把拼接好的sql语句输出,放到SQL Server上验证一下。
------解决思路----------------------
你最后一个逗号去了没?
你再把SQL语句输出放到数据库试一下,或者先试一下下面的语句。
因为你的表设了外键,所以保证studentInfomation表已经存在。
这是我创建数据表的代码 因为每个班的课程不同 所以列名不一定相同
string tablename = tbtable.Text;
string sqlStr = "create table"+" ";
sqlStr += tablename + "(";
sqlStr += "表编号 bigint identity(1000,1) primary key,";
sqlStr += "系别 varchar(50),";
sqlStr += "班别 varchar(50),";
sqlStr += "学号 bigint foreign key references studentInfomation(学号),";
for (int i = 0; i < tablesource.Rows.Count; i++)
{
sqlStr += tablesource.Rows[i]["课程名"].ToString()+"int,";
}
sqlStr += ")";
这是我实现创建的代码
SqlConnection conn = sqlDate.Conn();
SqlCommand cmd = new SqlCommand(sqlStr,conn);
cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
这是我sqlDate类里面的代码 本来没有Conn()这个方法的 但是前面的SqlCommand cmd 又需要conn 我就又创了个能有返回值的创建SqlConnection的方法
static SqlConnection conn;
public sqlDate()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static SqlConnection Conn() {
if (conn == null)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["InfomationConnectionString"].ToString());
//conn = new SqlConnection("server=localhost;database=Infomation;Trusted_Connection=yes");
}
if (conn.State == System.Data.ConnectionState.Closed)
{
conn.Open();
}
return conn;
}
public static void Open()
{
if (conn == null)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["InfomationConnectionString"].ToString());
//conn = new SqlConnection("server=localhost;database=Infomation;Trusted_Connection=yes");
}
if (conn.State == System.Data.ConnectionState.Closed)
{
conn.Open();
}
}
最后运行时提示'(' 附近有语法错误。
错误指向cmd.ExecuteNonQuery();
希望大家帮我看看问题出在哪里 谢谢
------解决思路----------------------
在for循环里面,字段名和数据类型Int之间没有空格分开,另外循环的最后一个的时候,应该不要逗号了,所以在循环后把最后一个逗号去掉(比如用SubString)。
如果还有问题,把拼接好的sql语句输出,放到SQL Server上验证一下。
------解决思路----------------------
你最后一个逗号去了没?
你再把SQL语句输出放到数据库试一下,或者先试一下下面的语句。
因为你的表设了外键,所以保证studentInfomation表已经存在。
CREATE TABLE qqq (
[表编号] bigint identity (1000, 1) PRIMARY KEY,
[系别] varchar (50),
[班别] varchar (50),
[学号] bigint foreign key references studentInfomation(学号),
[JAVA] int,
[ASP.NET] int,
[软件工程] int
)