在Asp.net中插入项集合

时间:2016-04-21 10:42:26

标签: sql asp.net insert

我试图插入一些我作为项目保留的单词。我的项目是asp.net web项目。我想为每个单词生成id并保持4个字段为null。我的单词表中有6个字段database.id字长fr布尔权重。

当我运行项目时,我收到此错误。

  

ExecuteNonQuery需要一个开放且可用的连接。该   连接的当前状态已关闭。

这里是代码,

 using (con){
    con.Open();

    foreach (var item in results) {//here trying to insert word its id and some other informations but for now they can stay null(yes,null allowed for them)
        id++;
        SqlCommand cmd= con.CreateCommand();
        cmd.CommandText= "insert into word values('"+id+"','"+item.Word+"','"+0+"','"+0+"','"+0+"','"+0+"')";

        cmd.ExecuteNonQuery();
        con.Close();
    }

编辑:

我已将con.Close移出迭代循环但现在我遇到了这个错误;

  

' /'中的服务器错误应用

     

'附近的语法不正确。字符后面有未闭合的引号   字符串')'。

 using (con){
        con.Open();

        foreach (var item in results) {//here trying to insert word its id and some other informations but for now they can stay null(yes,null allowed for them)
            id++;
            SqlCommand cmd= con.CreateCommand();
            cmd.CommandText= "insert into word values('"+id+"','"+item.Word+"','"+0+"','"+0+"','"+0+"','"+0+"')";

            cmd.ExecuteNonQuery();

        }  con.Close();
}   }

4 个答案:

答案 0 :(得分:3)

在您的代码中:

using (con){
    con.Open();

    foreach (var item in results) {
        //here trying to insert word its id and some other informations but for now they can stay null(yes,null allowed for them)
        id++;
        SqlCommand cmd= con.CreateCommand();
        cmd.CommandText= "insert into word values('"+id+"','"+item.Word+"','"+0+"','"+0+"','"+0+"','"+0+"')";

        cmd.ExecuteNonQuery();
        con.Close();
    }

你已经在foreach中写了con.Close(),所以在第一个循环结束时你关闭你的连接。

所以在你的foreach的近括号之后移动con.Close(),如下所示:

using (con){
con.Open();

foreach (var item in results) {//here trying to insert word its id and some other informations but for now they can stay null(yes,null allowed for them)
    id++;
    SqlCommand cmd= con.CreateCommand();
    cmd.CommandText= "insert into word values('"+id+"','"+item.Word+"','"+0+"','"+0+"','"+0+"','"+0+"')";

    cmd.ExecuteNonQuery();
}
con.Close();

答案 1 :(得分:2)

在第一次迭代时关闭SQL连接。

移动线:“con.Close();”在循环之外。

对于第二个问题,请确保在word属性中转义quatation mark 并尝试使用字符串格式来创建插入字符串

string word = String.Replace(item.Word,"'","''")
cmd.CommandText = string.Format("insert into word values('{0}','{1}','{2}','{3}','{4}','{5}')", id, word, 0, 0, 0, 0);

答案 2 :(得分:1)

移动con.Close();在foreach(){}

之外

答案 3 :(得分:1)

你必须确保每个单词(item.Word)都没有引号char,也许

String.Replace(item.Word,"'","''") 

解决您的问题。