windows下操作数据库的方法有ODBC和ADO两种
源码不是一句两句的问题
相关的例子网上搜搜多的是
❷ C# 如何向ACCESS数据库添加记录(实际情况)
String sql = "insert into 表名(字段1,字段2) values( '" + 字段1对应的值+ "' , '" + 字段2对应的值 + "')";
String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\data.mdb";
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(sql,connection);
connection.Open();
if (cmd.ExecuteNonQuery() > 0)//判断插入数据是否成功 { //执行要操作的语句 }
❸ c#通过for循环多次向数据库中插入数据。
你的问题不甚清晰。需要插入的数据来源是在窗体中吗?SQL需要拼接吗?
给你一段代码参考,这段代码是将窗体中dataGridView中的数据循环插入数据库,循环过程中拼接SQL,并执行插入:
//主方法,拼接SQL并执行插入
privateintInsertInTo()
{
StringBuildersqlinsert=newStringBuilder();
StringBuildersqlvalue=newStringBuilder();
sqlinsert.Append("insertinto你的表名(");
sqlvalue.Append("values(");
intnum=0;//该变量用来获取插入多少条数据
for(inti=0;i<dataGridView1.Rows.Count;i++)
{
for(intc=0;c<dataGridView1.Columns.Count;c++)
{
sqlinsert.Append(dataGridView1.Columns[c].HeaderText+",");//赋值列名
sqlvalue.Append("'"+dataGridView1.Rows[i].Cells[c].Value.ToString()+"'");//赋值列对应的值
}
stringsql=sqlinsert.ToString().Substring(0,sqlinsert.Length-1)+")"+sqlvalue.ToString().Substring(0,sqlvalue.Length-1)+")";//拼接完整插入SQL
num+=Insert(sql);//调用插入方法,并接收返回的插入行数
}
returnnum;
}
//连接数据库并执行SQL
privateintInsert(stringsql)
{
stringconnstring="server=127.0.0.1\SQLEXPRESS;database=你的数据库名;uid=用户名;pwd=密码";
SqlConnectionconn=newSqlConnection(connstring);
SqlCommandcmd=newSqlCommand(sql,conn);
conn.Open();
intn=cmd.ExecuteNonQuery();//执行
conn.Close();
cmd.Dispose();
returnn;
}
赋值列名时可以放在循环外只赋值一次。
❹ c# 求通用的数据库添加方法
这个是我自己写的,通配数据库所以表
先初始化数据库所有表结构
public static string connectionString;
private static List<Column> columns;
private static Dictionary<string, SqlDbType> sqlDbType;
static SqlHelper()
{
sqlDbType = new Dictionary<string, SqlDbType>();
sqlDbType.Add("bigint", SqlDbType.BigInt);
sqlDbType.Add("binary", SqlDbType.VarBinary);
sqlDbType.Add("bit", SqlDbType.Bit);
sqlDbType.Add("char", SqlDbType.Char);
sqlDbType.Add("date", SqlDbType.Date);
sqlDbType.Add("datetime", SqlDbType.DateTime);
sqlDbType.Add("datetime2", SqlDbType.DateTime2);
sqlDbType.Add("datetimeoffset", SqlDbType.DateTimeOffset);
sqlDbType.Add("decimal", SqlDbType.Decimal);
sqlDbType.Add("float", SqlDbType.Float);
sqlDbType.Add("image", SqlDbType.Binary);
sqlDbType.Add("int", SqlDbType.Int);
sqlDbType.Add("money", SqlDbType.Money);
sqlDbType.Add("nchar", SqlDbType.NChar);
sqlDbType.Add("ntext", SqlDbType.NText);
sqlDbType.Add("numeric", SqlDbType.Decimal);
sqlDbType.Add("nvarchar", SqlDbType.NVarChar);
sqlDbType.Add("real", SqlDbType.Real);
sqlDbType.Add("rowversion", SqlDbType.Timestamp);
sqlDbType.Add("smalldatetime", SqlDbType.DateTime);
sqlDbType.Add("smallint", SqlDbType.SmallInt);
sqlDbType.Add("smallmoney", SqlDbType.SmallMoney);
sqlDbType.Add("sql_variant", SqlDbType.Variant);
sqlDbType.Add("text", SqlDbType.Text);
sqlDbType.Add("time", SqlDbType.Time);
sqlDbType.Add("timestamp", SqlDbType.Timestamp);
sqlDbType.Add("tinyint", SqlDbType.TinyInt);
sqlDbType.Add("uniqueidentifier", SqlDbType.UniqueIdentifier);
sqlDbType.Add("varbinary", SqlDbType.VarBinary);
sqlDbType.Add("varchar", SqlDbType.VarChar);
sqlDbType.Add("xml", SqlDbType.Xml);
columns = new List<Column>();
DataTable dt = ExecuteDataset("SELECT d.name AS c_table, a.colorder AS c_OrderID, a.name AS c_name, a.colstat AS c_IsIdentity, CASE WHEN EXISTS (SELECT 1 FROM sysindexes y, sysindexkeys z WHERE y.id = z.id AND y.indid = z.indid AND z.id = a.id AND z.colid = a.colid AND y.status & 2948 = 2048) THEN '1' ELSE '0' END AS c_IsPK, b.name AS c_type, a.length AS c_ByteNumber, a.prec AS c_Length, ISNULL(a.scale, 0) AS c_DecimalDigits, a.isnullable AS c_IsAllowNull, ISNULL(e.text, '') AS c_Default, ISNULL(g.[value], '') AS c_Description FROM syscolumns a LEFT JOIN systypes b ON a.xusertype = b.xusertype INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties' LEFT JOIN syscomments e ON a.cdefault = e.id LEFT JOIN sys.extended_properties g ON a.id = G.major_id AND a.colid = g.minor_id LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0 WHERE d.name <> 'sysdiagrams' ORDER BY a.id,a.colorder").Tables[0];
foreach (DataRow dr in dt.Rows)
{
Column model = new Column();
model.Table = dr["c_table"].ToString();
model.OrderID = int.Parse(dr["c_OrderID"].ToString());
model.Name = dr["c_name"].ToString();
model.IsIdentity = (dr["c_IsIdentity"].ToString() == "1" ? true : false);
model.IsPK = (dr["c_IsPK"].ToString() == "1" ? true : false);
model.SqlDbType = sqlDbType[dr["c_type"].ToString()];
model.ByteNumber = int.Parse(dr["c_ByteNumber"].ToString());
if (dr["c_Length"].ToString() == "")
{
model.Length = null;
}
else
{
model.Length = int.Parse(dr["c_Length"].ToString());
}
model.DecimalDigits = int.Parse(dr["c_DecimalDigits"].ToString());
model.IsAllowNull = (dr["c_IsAllowNull"].ToString() == "1" ? true : false);
model.Default = dr["c_Default"].ToString();
model.Description = dr["c_Description"].ToString();
columns.Add(model);
}
}
/// <summary>
/// 数据添加
/// </summary>
public static object Add<T>(T dbModel)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
cmd.Connection = connection;
Type t = typeof(T);
PropertyInfo[] pros = t.GetProperties();
bool isIdentity = false;
StringBuilder sql = new StringBuilder(100);
foreach (PropertyInfo pro in pros)
{
Column model = columns.Find(m => m.Table == t.Name && m.Name == pro.Name);
if (model.IsPK && model.IsIdentity)
{
isIdentity = true;
}
if (!model.IsIdentity)
{
sql.Append(model.Name + ',');
object val = pro.GetValue(dbModel, null);
if (val == null)
{
val = DBNull.Value;
}
SqlParameter sp = new SqlParameter("@" + model.Name, model.SqlDbType);
sp.Value = val;
cmd.Parameters.Add(sp);
}
}
cmd.CommandText = "INSERT INTO " + t.Name + "(" + sql.ToString().TrimEnd(',') + ") VALUES (@" + sql.Replace(",", ",@").ToString().TrimEnd(new char[] { ',', '@' }) + ")" + (isIdentity ? ";SELECT @@IDENTITY" : "");
cmd.CommandType = CommandType.Text;
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if (Object.Equals(obj, System.DBNull.Value))
{
return null;
}
else
{
return obj;
}
}
}
}
❺ C#向数据库中增加数据
首先在tbl_Employee_Info values之间显式加入列名,然后才能进行后续判断。
❻ 怎样用c语言给mysql数据库插数据
mysql是有c语言接口的,安装相应库后就可以链接了,一般连接mysql的函数是mysql_connect或者mysql_real_connect(大概就是这么拼的吧。。。)可以使用mysql_query执行sql语句
❼ c#向数据库添加数据
SqlConnection conn = new SqlConnection("server=.;database=stu;uid=sa;pwd=;");
conn.Open();
SqlCommand cmd=new SqlCommand();
cmd.CommandText="insert into student values('"+this.txt1.Text+"','"+this.txt2.Text+"'";
cmd.Connection=conn;
cmd.ExecuteNonQuery();
//下面是查询数据用的
SqlDataAdapter sda = new SqlDataAdapter("select *from student", conn);
DataSet ds=new DataSet();
sda.Fill(ds,"student");
conn.Close();
❽ MySQL C API怎么实现数据库表的插入数据
MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客户端中用来设置读取超时时间的参数。在 MySQL 的官方文档中,该参数的描述是这样的:
MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.
也就是说在需要的时候,实际的超时时间会是设定值的 3 倍。但是实际测试后发现实际的超时时间和设置的超时时间一致。
而具体什么时候发生三倍超时,在文档中没有找到。所以对 MySQL 5.7.20 的源码进行了一些分析。
使用 GDB 调试代码找了实际与 mysql server 通信的代码,如下:
其中 vio_read() 函数中,使用 recv 和 poll 来读取报文和做读取超时。net_should_retry() 函数只有在发生 EINTR 时才会返回 true。从这段代码来看是符合测试结果的,并没有对读取进行三次重试。只有在读取操作被系统中断打断时才会重试,但是这个重试并没有次数限制。
从上面代码的分析可以看出,代码的逻辑和文档的描述不符。于是在一顿搜索后,找到了一个 MySQL 的 BUG(Bug #31163)。该 BUG 报告了在MySQL5.0 中,MySQL c api 读取的实际超时时间是设置的三倍,与现有文档描述相符。于是对 MySQL 5.0.96 的代码又进行分析。
同样使用 GDB 找到了通信部分的代码。这次找到了重试三次的代码,如下:
这个版本的 MySQL api 的读写超时是直接使用的 setsockopt 设置的。第一次循环,在 A 点发生了第一次超时(虽然注释写的非阻塞,但是客户端的连接始终是阻塞模式的)。然后在 B 点将该 socket 设置为阻塞模式,C 点这里重置 retry 次数。由于设置了 alarm 第二次以后的循环会直接进入 D 点的这个分支,并且判断循环次数。作为客户端时net->retry_count 始终是 1,所以重试了两次,共计进行了 3 次 vioread 后从 E 点退出函数。
由上面的分析可知,MySQL 文档对于该参数的描述已经过时,现在的 MYSQL_OPT_READ_TIMEOUT 并不会出现三倍超时的问题。而 Bug #31163 中的处理结果也是将文档中该参数的描述更新为实际读取超时时间是设定时间的三倍。也许是 MySQL 的维护者们在后续版本更新时忘记更新文档吧。
❾ C语言如何将变量插入Mysql数据库
你数据库用的是什么引擎?事务有没有提交?
1、在执行语句的下一句设置断点或添加超时50s,查看执行过程中有没有报错,并且看insert语句执行后当时数据库里有没有记录。
2、超时时间过后流程走完,在看看数据库里是否有数据;