Lok*_*oky 3 c# sql sql-server unity-game-engine
我需要一些帮助.
我尝试INSERT进入我的SQL数据库,但我不能,因为在这个代码行中给我一个错误:
commandoSQL.Connection = dbcon;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Assets/NGUI/Scripts/Interaction/ChamarVariavel.cs(43,49):错误CS0266:无法隐式转换类型
System.Data.IDbConnection' toSystem.Data.SqlClient.SqlConnection'.存在显式转换(您是否错过了演员?)"
我希望有人可以帮助我.
谢谢
我的代码:
public class ChamarVariavel : MonoBehaviour {
public UISlider slider;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnGUI(){
// Connection DB
string connectionString = "Data Source=(local);Initial Catalog=Test;User ID=******;Password=*******";
IDbConnection dbcon;
dbcon= new SqlConnection(connectionString);
dbcon.Open();
//DB Online
float x = slider.value * 100;
GUI.Label(new Rect( 570, 238, 70, 30 ), "(" + x.ToString("f2") + ")");
string qInsert = string.Format(@"INSERT INTO Fuel (fuel) VALUES ('{0}')", x);
SqlCommand commandoSQL = new SqlCommand(qInsert);
commandoSQL.Connection = dbcon;
try
{
commandoSQL.ExecuteNonQuery();
}
catch (Exception ex)
{
GUI.Label(new Rect( 300, 40, 300, 300 ), ex.ToString());
}
dbcon.Close();
//DB offline
}
}
Run Code Online (Sandbox Code Playgroud)
该错误实际上是在告诉您问题,您需要显式转换对象,因为SqlCommand正在寻找a SqlConnection,请考虑这样做:
new SqlCommand(qInsert, (SqlConnection)dbcon);
Run Code Online (Sandbox Code Playgroud)
并删除此行:
commandoSQL.Connection = dbcon;
Run Code Online (Sandbox Code Playgroud)
另一种选择是将其定义dbcon为SqlConnection:
SqlConnection dbcon
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
new SqlCommand(qInsert, dbcon);
Run Code Online (Sandbox Code Playgroud)
最后,看看我写的一篇博客文章 ; 你需要改变你使用对象的方式.
那里的另一种方法,它有助于概括您的数据访问代码:让连接创建命令:
using(var commandoSQL = dbcon.CreateCommand()) {
commandoSQL.CommandText = SQL;
//..
}
Run Code Online (Sandbox Code Playgroud)
在其他新闻中:使用参数,而不是 string.Format。SQL注入是一个巨大的问题。
| 归档时间: |
|
| 查看次数: |
9874 次 |
| 最近记录: |