1)SQL Server2000中自带数据库pubs中authors表第一个字段au_id,
它的数据类型是:id (varchar)
字段长度:11
这是什么类型啊?
2)我对这个表进行更新时提示错误:
将 varchar 值 '000-00-0000' 转换为数据类型为 int 的列时发生语法错误。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 将 varchar 值 '000-00-0000' 转换为数据类型为 int 的列时发生语法错误。
所用代码:
public void People_Update(Object sender, DataGridCommandEventArgs e) 
{
string au_fname = ((TextBox)e.Item.Cells[1].Controls[1]).Text;
string au_lname = ((TextBox)e.Item.Cells[2].Controls[1]).Text;SqlConnection connUpdate = new SqlConnection(strCnn);
connUpdate.Open();
String sql_edit = "UPDATE authors " +
"SET au_fname = '" + au_fname.Replace("'","''")+ "'," +
"au_lname = '" + au_lname.Replace("'","''")+ "'" +
" WHERE au_id = " + e.Item.Cells[0].Text;SqlCommand sqlCommandUpdate = new SqlCommand(sql_edit,connUpdate);
sqlCommandUpdate.ExecuteNonQuery();
connUpdate.Close();}//这是更改孟子e章大哥的部分代码
请问错误出在哪里?
另外
(1)string au_lname = ((TextBox)e.Item.Cells[2].Controls[1]).Text;
(2)e.Item.Cells[0].Text
这两句话什么意思?
有什么区别?
3)我想对这个表进行插入数据(关键是第一个字段)
应该怎么写?
谢谢!

解决方案 »

  1.   

    这么多问题啊?
    字符型
    格式不对,感觉像日期型格式获取单元格内容。sql语句 insert
      

  2.   

    varchar 类型String sql_edit = "UPDATE authors " +
    "SET au_fname = '" + au_fname.Replace("'","''")+ "'," +
    "au_lname = '" + au_lname.Replace("'","''")+ "'" +
    " WHERE au_id = '" + e.Item.Cells[0].Text+"'";
    ((TextBox)e.Item.Cells[2].Controls[1]).Text;
    找3列的第二个textboox的值e.Item.Cells[0].Text
    第一列的值
      

  3.   

    varchar 类型String sql_edit = "UPDATE authors " +
    "SET au_fname = '" + au_fname.Replace("'","''")+ "'," +
    "au_lname = '" + au_lname.Replace("'","''")+ "'" +
    " WHERE au_id = '" + e.Item.Cells[0].Text+"'";
    ((TextBox)e.Item.Cells[2].Controls[1]).Text;
    找3列的第二个控件(该控件由object转换成TextBox),并取其Text值e.Item.Cells[0].Text
    第一列的值
      

  4.   

    3 就用Varchar就可以了,它那个定义什么规则也没做,纯粹为了演示用的。
      

  5.   

    (1)string au_lname = ((TextBox)e.Item.Cells[2].Controls[1]).Text;
        在当前行的第三列里有一个TextBox控件,(说明这是一个模板列),这句话的意思是取出这列里面TextBox中的Text的值。
    (2)e.Item.Cells[0].Text
        是取出当前行第一列中的文本值。
    WHERE au_id = " + e.Item.Cells[0].Text; 这边错了,如果这样传的话,它会把e.Item.Cells[0].Text的值转换成数值型传进去。因为你的au_id是varchar()的。所以这句应该改成
    WHERE au_id = '" + e.Item.Cells[0].Text + "'"; 这样才行,你试试
      

  6.   

    varchar 类型
    是可变长的字符串类型
    其长度在最大长度之内,根据实际数据分配空间而char类型是固定长度的字符串类型
    它的长度是由设置的类型长度来决定的,如果存储的数据不够类型长度,则后面用空格补
      

  7.   

    1.varchar为系统自带类型,
    与char不同的是,在存储上,是按字符长度来分配的;而author表是(id (varchar));类型
    那是用户自定义类型,到企业管理器里下面自定义类型里查看2.((TextBox)e.Item.Cells[2].Controls[1]).Text;
    找3列的第二个textboox的值e.Item.Cells[0].Text
    第一列的值