以下代码写入数据库后都是空的,即内容为NULL,实际参数不起作用,为什么呢?麻烦各位帮看看,谢谢。 string SQL_INSERT_TOPIC = "insert into test values (@id,@title,@type,now())";
string PARM_ID = "@id";
string PARM_TITLE = "@title";
string PARM_TYPE = "@type";
OdbcParameter[] parms = new OdbcParameter[]
{
new OdbcParameter(PARM_ID,OdbcType.Int,4),
new OdbcParameter(PARM_TITLE,OdbcType.VarChar,80),
new OdbcParameter(PARM_TYPE,OdbcType.Char,1)
}; parms[0].Value = 20;
parms[1].Value = "welcome to beijing";
parms[2].Value = 'C'; OdbcCommand cmd = new OdbcCommand();
foreach (OdbcParameter pram in parms)
cmd.Parameters.Add(pram);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_INSERT_TOPIC;
cmd.ExecuteNonQuery();
conn.Close();
--以上--
string PARM_ID = "@id";
string PARM_TITLE = "@title";
string PARM_TYPE = "@type";
OdbcParameter[] parms = new OdbcParameter[]
{
new OdbcParameter(PARM_ID,OdbcType.Int,4),
new OdbcParameter(PARM_TITLE,OdbcType.VarChar,80),
new OdbcParameter(PARM_TYPE,OdbcType.Char,1)
}; parms[0].Value = 20;
parms[1].Value = "welcome to beijing";
parms[2].Value = 'C'; OdbcCommand cmd = new OdbcCommand();
foreach (OdbcParameter pram in parms)
cmd.Parameters.Add(pram);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_INSERT_TOPIC;
cmd.ExecuteNonQuery();
conn.Close();
--以上--
foreach (OdbcParameter pram in parms)
cmd.Parameters.Add(pram);
放到
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_INSERT_TOPIC;
后面试试
是存储过程类型。。
从你写SQL语句的语法上判断应该是SQL数据才对。请看我最近写的一篇关于ADO.NET的文章:
asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
汗
string SQL_INSERT_TOPIC = "insert into test values (@id,@title,@type,now())";
string PARM_ID = @id;
string PARM_TITLE = @title;
string PARM_TYPE = @type;
OdbcParameter[] parms = new OdbcParameter[]
{
new OdbcParameter(PARM_ID,OdbcType.Int,4),
new OdbcParameter(PARM_TITLE,OdbcType.VarChar,80),
new OdbcParameter(PARM_TYPE,OdbcType.Char,1)
}; parms[0].Value = 20;
parms[1].Value = "welcome to beijing";
parms[2].Value = 'C'; OdbcCommand cmd = new OdbcCommand();
foreach (OdbcParameter pram in parms)
cmd.Parameters.Add(pram);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_INSERT_TOPIC;
cmd.ExecuteNonQuery();
conn.Close();
你试试!
string SQL_INSERT_TOPIC = "insert into test values (@title,@type,now())";
string PARM_TITLE = "@title";
string PARM_TYPE = "@type";
OdbcParameter[] parms = new OdbcParameter[]
{
new OdbcParameter(PARM_TITLE,OdbcType.VarChar,80),
new OdbcParameter(PARM_TYPE,OdbcType.Char,1)
}; parms[0].Value = "welcome to beijing";
parms[1].Value = 'C'; 这样就可以的了。
1.mysql数据库驱动有两种:mysql-connector-odbc和mysql-connector-net,
前者不支持参数,后者支持,这是我测试的结果;
2.参数变量使用跟SqlServer一样,只需把@变为?,
如,mysql中写为:insert into test values (?id,?title,?type,now())";
3.使用mysql-connector-net驱动很简单,到网上下载mysql-connector-net-5.2.3-src,
解压后,把mysql.data.dll添加到项目的bin文件夹即可使用;
4.连接本机mysql数据库方法例子如下:
string connStr = "server=localhost;user id=root; password=yourPassword;database=yourDatabase";
MySqlConnection conn = new MySqlConnection(connStr); 下面附上测试通过的代码:
string connStr = "server=localhost;user id=root; password=***; database=test";
MySqlConnection conn = new MySqlConnection(connStr);
if (conn != null)
conn.Open();
else
return; string SQL_INSERT_TOPIC = "insert into test values (null,?title,?type,now())";
string PARM_TITLE = "?title";
string PARM_TYPE = "?type";
MySqlParameter[] parms = new MySqlParameter[]
{
new MySqlParameter(PARM_TITLE,MySqlDbType.VarChar,80),
new MySqlParameter(PARM_TYPE,MySqlDbType.VarChar,1)
};
parms[0].Value = "welcome to beijing";
parms[1].Value = "C"; MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_INSERT_TOPIC; foreach (MySqlParameter pram in parms)
cmd.Parameters.Add(pram); cmd.ExecuteNonQuery();
conn.Close(); --以上--