{
Form4 signForm = new Form4();
signForm.Show();
System.DateTime currentTime = new System.DateTime();
string tmp = currentTime.ToString(“d”);
string sql = “select count(*) from signTable where” + tmp + “=”” + tmp+”””;
SqlConnection lo_connAgain = new SqlConnection(“server=(local)\SQLEXPRESS;database=studentData;user id=sa;password=hanhe1254745721″);
lo_connAgain.Open();
if (!IsColExisted(lo_connAgain,”signTable”,sql))
{
creatColumn();
}
}
public void creatColumn()
{
//System.DateTime currentTime = new System.DateTime();
string tmp = DateTime.Now.ToString(“yyyy-MM-dd”);
string sql = “alter table signTable add ” + tmp + ” int default 0″;
MessageBox.Show(sql, sql, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
SqlConnection lo_conn = new SqlConnection(“server=(local)\SQLEXPRESS;database=studentData;user id=sa;password=hanhe1254745721”);
lo_conn.Open();
SqlCommand lo_cmd = new SqlCommand();
lo_cmd.CommandText = sql;
lo_cmd.Connection = lo_conn;
lo_cmd.ExecuteNonQuery();
}
public static bool IsColExisted(SqlConnection conSource_, string strTableName_, string strColName_)
{
bool bExist = true;
try
{
string strExist = @”select count(*) from dbo.syscolumns where id=object_id(“” + strTableName_ + @””)” + @” and name=”” + strColName_ + @”””;
SqlCommand cmdExist = new SqlCommand(strExist, conSource_);
int nNum = (int)cmdExist.ExecuteScalar();
bExist = (0 != nNum);
}
catch
{
bExist = false;
}
return bExist;
}
在判断字段能否存在的时候总感觉不对,但是又不知道是哪里不对,而且在执行新建字段的sql命令的时候回出现一个语法错误,求高手帮忙解决
10
10
if exists(select * from ……..) alert table add column ………
sql server 对于 exists 有特殊的优化,因此应该写 select * 查询,这样要比写上字段名更高效。
15
string sql = “alter table signTable add ” + tmp + ” int default 0″;
显然 tmp 是形如 2016-09-04 这样的串
而数据库是不允许有 数字开头 的字段名的,实在要用就得转义 mssql:[2016-09-04] mysql:`2016-09-04`
一年有 365 天,两年有 730 天…,像你这样每天一个字段,不超限吗?
5
字段是 成绩
if (TB1.Columns.Contains(“成绩”))
本人第1次 感觉可能会答对一个问题~期待