不允许从数据类型 ntext 到数据类型 varchar 的隐性转换(表 'SCADA.dbo.members',列 'member_login')。请使用 CONVERT 函数来运行此查询。
private string strConn = "data source=localhost;initial catalog=SCADA;user id=sa;password=sa";
SqlConnection Conn;
SqlCommand myCommand;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillGridView();
}
}
private void FillGridView()
{
Conn = new SqlConnection(strConn);
string strSql = "SELECT * FROM members";
myCommand = Conn.CreateCommand();
myCommand.CommandText = strSql;
Conn.Open();
myGridView.DataSource = myCommand.ExecuteReader();
myGridView.DataBind();
Conn.Close();
}
protected void OK_Click(object sender, EventArgs e)
{
Conn = new SqlConnection(strConn);
string insertSql = "INSERT INTO members(member_name,member_login)" +
"VALUES(@member_name,@member_login)";
myCommand = Conn.CreateCommand();
myCommand.CommandText = insertSql;
myCommand.Parameters.Add("@member_name", SqlDbType.NVarChar, 15);
myCommand.Parameters.Add("@member_login", SqlDbType.NText);
myCommand.Parameters["@member_name"].Value = txtCategryName.Text;
myCommand.Parameters["@member_login"].Value = txtDescription.Text;
Conn.Open();
myCommand.ExecuteReader();
Conn.Close();
txtCategryName.Text = "";
txtDescription.Text = "";
FillGridView();
}
}
出现那个框的时候,是myCommand.ExecuteReader();这里出错
private string strConn = "data source=localhost;initial catalog=SCADA;user id=sa;password=sa";
SqlConnection Conn;
SqlCommand myCommand;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillGridView();
}
}
private void FillGridView()
{
Conn = new SqlConnection(strConn);
string strSql = "SELECT * FROM members";
myCommand = Conn.CreateCommand();
myCommand.CommandText = strSql;
Conn.Open();
myGridView.DataSource = myCommand.ExecuteReader();
myGridView.DataBind();
Conn.Close();
}
protected void OK_Click(object sender, EventArgs e)
{
Conn = new SqlConnection(strConn);
string insertSql = "INSERT INTO members(member_name,member_login)" +
"VALUES(@member_name,@member_login)";
myCommand = Conn.CreateCommand();
myCommand.CommandText = insertSql;
myCommand.Parameters.Add("@member_name", SqlDbType.NVarChar, 15);
myCommand.Parameters.Add("@member_login", SqlDbType.NText);
myCommand.Parameters["@member_name"].Value = txtCategryName.Text;
myCommand.Parameters["@member_login"].Value = txtDescription.Text;
Conn.Open();
myCommand.ExecuteReader();
Conn.Close();
txtCategryName.Text = "";
txtDescription.Text = "";
FillGridView();
}
}
出现那个框的时候,是myCommand.ExecuteReader();这里出错
说的很清楚了,楼主的数据库中有个字段是ntext型的,你将varchar类型插入进去的时候要转换下!这是SQL语句执行错误造成的
if(adr....)
{
myGridView.DataSource = sdr
myGridView.DataBind();
}
myCommand.Parameters.Add("@member_login", SqlDbType.NVarChar,200);
cast(字段 as varchar)
convert(varchar(300),字段)
而你在赋值的时候却指定它为 NText类型.
myCommand.Parameters.Add("@member_login", SqlDbType.NText);
myCommand.Parameters.Add("@member_login", SqlDbType.Varchar);
myCommand.Parameters["@member_login"].Value = txtDescription.Text;下面一句就不用管类型了myCommand.Parameters.AddWithValue("@member_login", txtDescription.Text);